【发布时间】:2021-02-21 19:24:00
【问题描述】:
如果我有一个文件test.txt,我会这样打开它:
import time
with open("test.txt", "r") as f:
time.sleep(30)
print(f.readlines())
我在 Python 打开文件和读取行之间使用文本编辑器编辑文件,我应该期待什么?
我应该看到打开文件之前的行,还是编辑后文件的新行,还是不确定我会看到什么?
(我将自己运行这些测试,但我想我会在这里问一下,以防人们有更多信息,也可以分享我的结果。)
编辑:
通过一些有用的 cmets 和测试,我认为我对正在发生的事情有了相当不错的理解,但更深入的理解将不胜感激。例如,我可以在 readlines 正在运行 附近编辑一个非常大的文件并让它接受更改吗?还是文件被锁定在每个单独的函数中?
【问题讨论】:
-
这可能只是你得到一个拒绝的对话框:
The file is locked for editing by another user.因为你只是在阅读它虽然'r'不会发生很多事情。 -
无论如何该文件已经被读取。您只是在延迟打印内存中的内容。
-
@RJAdriaansen 这也是我认为可能发生的事情,但这不是我得到的结果。
-
那我和你一样好奇这个谜团解开了!
-
@RJAdriaansen 这实际上是不正确的。
f.readlines()是一次从文件中读取一行的序列。open不读取文件它只是准备 pyton 读取它。该信息不存储在内存中,因此在显式调用读取之前根本不会读取该文件。将f.read()存储在变量中意味着所有信息都已被读取。