猿问

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

如何在python中同时读取和写入打开腌制文件?有没有办法做到这一点,或者它是不可能的。


米琪卡哇伊
浏览 90回答 3
3回答

达令说

我不赞成使用这样的代码,相反,我会敦促你用你试图解决的实际问题来更新问题,而不是有可能在读写模式下打开一个泡菜对象。将其包装在尝试中的原因除外,这是在泡菜文件不存在时第一次运行,因此我们将创建它。import pickletry:    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]但同样,这不是我会推荐的东西。相反,如果您使用实际代码和问题更新问题,则可能有更好的方法来解决此问题并获得其他答案。

jeck猫

不可能。为此,请打开 2 个文件指针,一个用于读取,另一个用于写入。对于写入指针,将其命名为“文件.tmp”或其他名称。写入此文件后,可以将另一个文件替换为新文件。伪代码是:file.tmpf1 = open('hello.txt', 'r')f2 = open('hello.txt.tmp', 'w')f1_contents = f1.read()# do something with f1_contentsf2.write(f1_contents)f1.close(); f2.close()import osos.rename('hello.txt.tmp', 'hello.txt')

慕桂英4014372

您应该更多地了解您想要实现的目标。正确读取包含多个对象的泡菜文件会很棘手 - 您必须在对象的开头和结尾处保留一个带有索引的侧结构。总而言之,使用sqlite3更容易,用它创建一个数据库文件,其中包含一个表(将其命名为“泡菜”),该表可能只包含两列:一个用于腌制对象的ID,以及序列化对象本身。
随时随地看视频慕课网APP

相关分类

Python
我要回答