鱼C论坛

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

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

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

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

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

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

因为要换电脑了~
count = 0
count你这定义的是整数 ,整数不能直接和字符串 相 +
print('电脑一共猜了' + str(count) + '次')
转为字符串即可
建议import 模块都放第一行,养成良好的习惯
完整代码:
import random

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:

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

    if a == d:
        print('电脑一共猜了' + str(count) + '次')
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-19 14:20:25 | 显示全部楼层
报错还是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:21:18 | 显示全部楼层
未设定用来打开文稿“my_list.pkl”的应用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

直接记事本打开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-19 14:22:25 | 显示全部楼层
记事本打开后没有东西,存储的内容看不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这不清楚了 , 试试楼上的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

会不会给你open时候给覆盖了,毕竟是 wb 打开方式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,还是感谢大佬回复~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:24:20 | 显示全部楼层
windows系统我熟,Mac系统不大会搞这些东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

萌新一枚,求解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

txt文件格式打不开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-19 14:30:56 | 显示全部楼层
打开也没有内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

如果之前用open的'w'写入方式打开过,内容就会空了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你好像被审核了 休息一下再回复,现在我们看不到你的回复了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 16:31:07 | 显示全部楼层
你的代码只有pickling的部分,没有unpickling的部分,pickle把数据打包成为一个二进制文件,用文本方式的打不开了,其特定的格式只有在python里unpickling才能恢复数据:
import pickle
pickle_file=open('my_list.pkl','rb')
mylist=pickle.load(pickle_file)
pickle_file.close()
print(mylist)
你的代码不就是小甲鱼的演示代码吗?下面不就是教你恢复的代码。
想知道小甲鱼最近在做啥?请访问 -> 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
        
   
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 17:22:58 | 显示全部楼层
报错?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

因为要换电脑了~
count = 0
count你这定义的是整数 ,整数不能直接和字符串 相 +
print('电脑一共猜了' + str(count) + '次')
转为字符串即可
建议import 模块都放第一行,养成良好的习惯
完整代码:
import random

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:

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

    if a == d:
        print('电脑一共猜了' + str(count) + '次')
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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:

    a=random.randint(b,c)
    count+=1
   
    if a==d:
        print('电脑一共猜了', count,'次')
        break
P.S: 最好把导入模块的语句写到程序开头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 06:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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