为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中同时读取和写入打开腌制文件?

如何在python中同时读取和写入打开腌制文件?

米琪卡哇伊 2022-09-20 15:14:55
如何在python中同时读取和写入打开腌制文件?有没有办法做到这一点,或者它是不可能的。
查看完整描述

3 回答

?
达令说

TA贡献1821条经验 获得超6个赞

我不赞成使用这样的代码,相反,我会敦促你用你试图解决的实际问题来更新问题,而不是有可能在读写模式下打开一个泡菜对象。将其包装在尝试中的原因除外,这是在泡菜文件不存在时第一次运行,因此我们将创建它。


import pickle


try:

    with open("my_pickle.file", "rb+") as pickle_file:

        mylist = pickle.load(pickle_file)

        mylist = [i * 2 for i in mylist]

        pickle_file.seek(0)

        pickle.dump(mylist, pickle_file)

        print(mylist)

except FileNotFoundError as fnfe:

    with open("my_pickle.file", "wb") as pickle_file:

        pickle.dump([1, 2, 3], pickle_file)

运行此脚本 5 次,第一次创建腌制对象,接下来 4 次,它将使列表中的值加倍


输出


[1, 2, 3]

[2, 4, 6]

[4, 8, 12]

[8, 16, 24]

[16, 32, 48]

但同样,这不是我会推荐的东西。相反,如果您使用实际代码和问题更新问题,则可能有更好的方法来解决此问题并获得其他答案。


查看完整回答
反对 回复 2022-09-20
?
jeck猫

TA贡献1909条经验 获得超7个赞

不可能。


为此,请打开 2 个文件指针,一个用于读取,另一个用于写入。对于写入指针,将其命名为“文件.tmp”或其他名称。写入此文件后,可以将另一个文件替换为新文件。伪代码是:file.tmp


f1 = open('hello.txt', 'r')

f2 = open('hello.txt.tmp', 'w')


f1_contents = f1.read()

# do something with f1_contents

f2.write(f1_contents)


f1.close(); f2.close()


import os

os.rename('hello.txt.tmp', 'hello.txt')


查看完整回答
反对 回复 2022-09-20
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您应该更多地了解您想要实现的目标。

正确读取包含多个对象的泡菜文件会很棘手 - 您必须在对象的开头和结尾处保留一个带有索引的侧结构。

总而言之,使用sqlite3更容易,用它创建一个数据库文件,其中包含一个表(将其命名为“泡菜”),该表可能只包含两列:一个用于腌制对象的ID,以及序列化对象本身。


查看完整回答
反对 回复 2022-09-20
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信