鱼C论坛

 找回密码
 立即注册
查看: 4946|回复: 25

[已解决]Mac系统下pkl文件打不开,求方法

[复制链接]
发表于 2020-5-19 14:18:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求啊~~~~~~~只要能帮到忙,比采纳!
  1. import pickle
  2. my_list=[123,3.14,'小甲鱼',['another list']]
  3. pickle_file=open('my_list.pkl','wb')
  4. pickle.dick=(my_list,pickle_file)
  5. pickle_file.close()
复制代码
最佳答案
2020-5-19 17:22:59
本帖最后由 Twilight6 于 2020-5-19 17:25 编辑

因为要换电脑了~
  1. count = 0
复制代码

count你这定义的是整数 ,整数不能直接和字符串 相 +

  1. print('电脑一共猜了' + str(count) + '次')
复制代码

转为字符串即可
建议import 模块都放第一行,养成良好的习惯
完整代码:
  1. import random

  2. b = int(input('请输入一个数字范围的最小数'))
  3. c = int(input('请输入一个数字范围的最大数'))
  4. d = int(input('请在你输入的范围内输入一个数'))
  5. count = 0
  6. while True:
  7.     if d > c or d < b:
  8.         d = input('请重新在你输入的范围内输入一个数')
  9.     else:
  10.         break

  11. while True:

  12.     a = random.randint(b, c)
  13.     count += 1

  14.     if a == d:
  15.         print('电脑一共猜了' + str(count) + '次')
  16.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 14:20:25 | 显示全部楼层
报错还是?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:21:18 | 显示全部楼层
未设定用来打开文稿“my_list.pkl”的应用程序。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 14:21:53 | 显示全部楼层
青出于蓝 发表于 2020-5-19 14:21
未设定用来打开文稿“my_list.pkl”的应用程序。

直接记事本打开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:21:54 | 显示全部楼层
本帖最后由 青出于蓝 于 2020-5-19 14:23 编辑

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-19 14:22:25 | 显示全部楼层
记事本打开后没有东西,存储的内容看不到
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 14:23:14 | 显示全部楼层
青出于蓝 发表于 2020-5-19 14:21
未设定用来打开文稿“my_list.pkl”的应用程序。

这不清楚了 , 试试楼上的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 14:23:48 | 显示全部楼层
青出于蓝 发表于 2020-5-19 14:22
记事本打开后没有东西,存储的内容看不到

会不会给你open时候给覆盖了,毕竟是 wb 打开方式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:23:48 | 显示全部楼层
Twilight6 发表于 2020-5-19 14:23
这不清楚了 , 试试楼上的

好的,还是感谢大佬回复~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:24:20 | 显示全部楼层
windows系统我熟,Mac系统不大会搞这些东西
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:25:01 | 显示全部楼层
Twilight6 发表于 2020-5-19 14:23
会不会给你open时候给覆盖了,毕竟是 wb 打开方式

萌新一枚,求解释
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:30:21 | 显示全部楼层

txt文件格式打不开
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:30:56 | 显示全部楼层
打开也没有内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 14:47:38 | 显示全部楼层

open 的 'w' 打开方式是  若打开的文件已存在那么就用这个新文件覆盖原来的文件,若不存在就直接创建

如果之前用open的'w'写入方式打开过,内容就会空了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 15:03:50 | 显示全部楼层

你好像被审核了 休息一下再回复,现在我们看不到你的回复了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 16:31:07 | 显示全部楼层
你的代码只有pickling的部分,没有unpickling的部分,pickle把数据打包成为一个二进制文件,用文本方式的打不开了,其特定的格式只有在python里unpickling才能恢复数据:
  1. import pickle
  2. pickle_file=open('my_list.pkl','rb')
  3. mylist=pickle.load(pickle_file)
  4. pickle_file.close()
  5. print(mylist)
复制代码

你的代码不就是小甲鱼的演示代码吗?下面不就是教你恢复的代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 17:21:38 | 显示全部楼层

简单小程序求为何出错


b=int(input('请输入一个数字范围的最小数'))
c=int(input('请输入一个数字范围的最大数'))
d=int(input('请在你输入的范围内输入一个数'))
count=0
while True:
    if d>c or d<b:
        d=input('请重新在你输入的范围内输入一个数')
    else:
        break
        
while True:
   
    import random
    a=random.randint(b,c)
    count+=1
   
    if a==d:
        print('电脑一共猜了'+count+'次')
        break
        
   
   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 17:22:58 | 显示全部楼层
报错?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 17:22:59 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-5-19 17:25 编辑

因为要换电脑了~
  1. count = 0
复制代码

count你这定义的是整数 ,整数不能直接和字符串 相 +

  1. print('电脑一共猜了' + str(count) + '次')
复制代码

转为字符串即可
建议import 模块都放第一行,养成良好的习惯
完整代码:
  1. import random

  2. b = int(input('请输入一个数字范围的最小数'))
  3. c = int(input('请输入一个数字范围的最大数'))
  4. d = int(input('请在你输入的范围内输入一个数'))
  5. count = 0
  6. while True:
  7.     if d > c or d < b:
  8.         d = input('请重新在你输入的范围内输入一个数')
  9.     else:
  10.         break

  11. while True:

  12.     a = random.randint(b, c)
  13.     count += 1

  14.     if a == d:
  15.         print('电脑一共猜了' + str(count) + '次')
  16.         break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 17:23:02 | 显示全部楼层
改成这样:
  1. import random

  2. b=int(input('请输入一个数字范围的最小数'))
  3. c=int(input('请输入一个数字范围的最大数'))
  4. d=int(input('请在你输入的范围内输入一个数'))
  5. count=0
  6. while True:
  7.     if d>c or d<b:
  8.         d=input('请重新在你输入的范围内输入一个数')
  9.     else:
  10.         break
  11.         
  12. while True:

  13.     a=random.randint(b,c)
  14.     count+=1
  15.    
  16.     if a==d:
  17.         print('电脑一共猜了', count,'次')
  18.         break
复制代码

P.S: 最好把导入模块的语句写到程序开头
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 15:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表