鱼C论坛

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

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

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

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

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

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

  1. try:
  2.     while True:
  3.         print(pickle.load(a))
  4. except:
  5.     print('全部打印完成')
复制代码


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

你一次 pickle.load(a) 只能打印一次
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-22 20:13:45 | 显示全部楼层
rb+
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

没看到,谢谢大佬!我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是 rb+ 这个啊 二进制读写模式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好像不行?还是我代码的问题,稍等,我贴代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:18:58 | 显示全部楼层
Twilight6 发表于 2020-5-22 20:15
就是 rb+ 这个啊 二进制读写模式
  1. import pickle
  2. print('永久储存内容输入地点!!!\n输入后不支持修改,请慎重填写!')
  3. a=open('pickle_file.pkl','rb+')
  4. b=str(input('请输入您要永久存储某人的名字:'))
  5. c=str(input('请输入您要永久存储的某人相关信息:'))
  6. city={b:c}
  7. pickle.dump(city,a)
  8. a.close()

复制代码
当你运行编辑一次后,在运行编辑一次,第一次的内容就没有了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好  二进制打开的 就要以二进制写入才行的噢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你想要往文件里追加内容是吗?  a 可以直接追加写入的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的,我试试哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

前提文件存在 否则报错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

ab还是ab+......
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

原文件存在,我想在原文件基础上添加文件内容~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那 直接 ab 就行了 不要那么麻烦 哈哈哈  如果你要读取 在加个+就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

GIF.gif
我纠正下我上面的错误,rb+ 会覆盖内容,只是是按行覆盖的 我自己测试了下 抱歉误导了你
小甲鱼最新课程 -> https://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‘都能打印出来~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-22 20:33:05 | 显示全部楼层
pkl二进制文件的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

如果不介意改一改我那乱糟糟的代码,可否改一改~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


我现在才发现是用 pickle 模块 哈哈哈 抱歉  请问ab+ 应该没问题了吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

当时脑积水,现在发现有不少问题。ab+是没有问题了,怎么添加pkl文件里字典的键与值呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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