鱼C论坛

 找回密码
 立即注册
查看: 1159|回复: 31

[已解决]关于字典的问题

[复制链接]
发表于 2020-5-22 20:10:30 | 显示全部楼层 |阅读模式

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

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

x
open打开一个二进制下是一个字典的文件。哪种模式下(例如wb,r),才能在不删除原来字典的数据的轻快下,往字典添加内容?
如有表达不清楚,请回复~
急啊,求解决
最佳答案
2020-5-22 21:48:02
青出于蓝 发表于 2020-5-22 21:33
还是不行啊,用打开文件后,显示的还是只有最后的那个输入
try:
    while True:
        print(pickle.load(a))
except:
    print('全部打印完成')

你打印要这样打的  你每次dump 一次 是dump进去一个字典  打印顺序也是和你dump进去顺序是一样的

你一次 pickle.load(a) 只能打印一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-22 20:13:45 | 显示全部楼层
rb+
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-22 20:14:33 | 显示全部楼层
语文不好,表达的可能不太清楚。
就是open(‘文件’,’模式’)  我要打开的是一个pkl文件,要求在不破坏原内容的情况下能打开并编辑文件。(注:这是个二进制文件)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:15:08 | 显示全部楼层

没看到,谢谢大佬!我试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:15:15 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:14
语文不好,表达的可能不太清楚。
就是open(‘文件’,’模式’)  我要打开的是一个pkl文件,要求在不破坏原 ...

就是 rb+ 这个啊 二进制读写模式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:16:55 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:15
就是 rb+ 这个啊 二进制读写模式

好像不行?还是我代码的问题,稍等,我贴代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:18:58 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:15
就是 rb+ 这个啊 二进制读写模式
import pickle
print('永久储存内容输入地点!!!\n输入后不支持修改,请慎重填写!')
a=open('pickle_file.pkl','rb+')
b=str(input('请输入您要永久存储某人的名字:'))
c=str(input('请输入您要永久存储的某人相关信息:'))
city={b:c}
pickle.dump(city,a)
a.close()
当你运行编辑一次后,在运行编辑一次,第一次的内容就没有了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:19:03 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:16
好像不行?还是我代码的问题,稍等,我贴代码

好  二进制打开的 就要以二进制写入才行的噢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:20:53 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:18
当你运行编辑一次后,在运行编辑一次,第一次的内容就没有了

你想要往文件里追加内容是吗?  a 可以直接追加写入的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:22:00 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:20
你想要往文件里追加内容是吗?  a 可以直接追加写入的

是的,我试试哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:22:43 | 显示全部楼层

前提文件存在 否则报错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:22:49 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:20
你想要往文件里追加内容是吗?  a 可以直接追加写入的

ab还是ab+......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:23:35 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:22
前提文件存在 否则报错的

原文件存在,我想在原文件基础上添加文件内容~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:25:29 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:23
原文件存在,我想在原文件基础上添加文件内容~~

那 直接 ab 就行了 不要那么麻烦 哈哈哈  如果你要读取 在加个+就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:31:14 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:23
原文件存在,我想在原文件基础上添加文件内容~~

GIF.gif
我纠正下我上面的错误,rb+ 会覆盖内容,只是是按行覆盖的 我自己测试了下 抱歉误导了你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:32:07 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:25
那 直接 ab 就行了 不要那么麻烦 哈哈哈  如果你要读取 在加个+就好了

好像还不行,貌似是你理解错了....
假设我运行输入11,22    然后运行完毕
在运行输入111,222     运行完毕
在用load读取打印,看到的只有’111‘:‘222’。目标实现‘11’:’22‘和’111‘:’222‘都能打印出来~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:33:05 | 显示全部楼层
pkl二进制文件的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:35:31 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:31
我纠正下我上面的错误,rb+ 会覆盖内容,只是是按行覆盖的 我自己测试了下 抱歉误导了你

如果不介意改一改我那乱糟糟的代码,可否改一改~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:39:21 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:35
如果不介意改一改我那乱糟糟的代码,可否改一改~


我现在才发现是用 pickle 模块 哈哈哈 抱歉  请问ab+ 应该没问题了吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:43:48 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:39
我现在才发现是用 pickle 模块 哈哈哈 抱歉  请问ab+ 应该没问题了吧?

当时脑积水,现在发现有不少问题。ab+是没有问题了,怎么添加pkl文件里字典的键与值呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 04:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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