鱼C论坛

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

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

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

使用道具 举报

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

就是 rb+ 这个啊 二进制读写模式
小甲鱼最新课程 -> 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:43 | 显示全部楼层

前提文件存在 否则报错的
小甲鱼最新课程 -> 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:39:21 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:35
如果不介意改一改我那乱糟糟的代码,可否改一改~


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

使用道具 举报

发表于 2020-5-22 20:53:25 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:43
当时脑积水,现在发现有不少问题。ab+是没有问题了,怎么添加pkl文件里字典的键与值呢?

就按照你那样添加吧 加个循环就可以持续添加了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 20:55:54 | 显示全部楼层
青出于蓝 发表于 2020-5-22 20:43
当时脑积水,现在发现有不少问题。ab+是没有问题了,怎么添加pkl文件里字典的键与值呢?

对了 input 本身就是 以字符串输出的  你不用再次 str 转为字符串了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 21:10:22 | 显示全部楼层
青出于蓝 发表于 2020-5-22 21:08
循环是for循环还是while循环,我是萌新,有点蠢,见谅~~

  1. while True:
  2.     b=input('请输入您要永久存储某人的名字(输入Esc退出):')
  3.     if b == 'Esc':
  4.         break
  5.     c=input('请输入您要永久存储的某人相关信息:')
  6.     city={b:c}
  7.     pickle.dump(city,a)
复制代码

问题差不多都解决了,记得设置最佳 嘿嘿~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 21:39:05 | 显示全部楼层
青出于蓝 发表于 2020-5-22 21:33
还是不行啊,用打开文件后,显示的还是只有最后的那个输入

你只pickle.load 一次肯定啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 23:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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