同时从两个不同的脚本读写同一个文件

4

我有一些关于使用Python读写文件的简单问题。

我想从一个脚本中只读取(不写入),然后从另一个脚本中读取并写入相同的文件。

脚本1-仅读取:

with open("log.txt", "r") as f:
    content = f.read()

脚本_2 - 读取和写入:

with open("log.txt", "a+") as f:
    content = f.read()
    f.write("This is new line,")

我的问题是 - 这行吗?

当脚本在完全相同的时间尝试访问同一文件时,我会遇到一些错误或其他情况吗?(是的,很难测试这个^^)

我的意思是,我正在阅读一些与此相关的帖子,现在我不确定了。

3个回答

1

从技术上讲,这些脚本不会同时运行,所以不会出现问题,除非你从不同的线程中运行它们,在这种情况下,我认为这是可以的。

但是你可以将脚本放入一个函数中,并在循环中调用它们,因为你可以将分配的变量传递到该函数中,这是由Joshua的答案展示的,显示你可以同时循环进入文件。

但是,如果你想将它们保留在单独的文件中,它们不会同时被调用,因为如果你从文件中调用它们,它们不会在完全相同的时刻运行,即使你这样做也没问题。


1
你可以一起完成它们:
with open("log.txt", "r") as f1, open("log.txt", "a+") as f2:
    content1 = f1.read()
    content2 = f2.read()
    f2.write("This is new line,")

0
当你写入文件时,你只是在写入一个缓冲区,这个缓冲区是操作系统为你分配的(至少在Linux中),在刷新缓冲区后(在我们的情况下,仅刷新不足以,需要调用Python函数flush和sync),才会将数据实际写入文件!因此,只要你在读取时没有刷新写入器,就应该没问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接