无法让 Python 读取直到文件末尾

Kel*_*tek 5 python linux directory file

我尝试了几种不同的方法,但结果似乎总是相同的。我无法让 Python 读取到这里的文件末尾。大约只进行到一半就停止了。我尝试过二进制和 ASCII 模式,但这两种模式都有相同的结果。我还检查了文件中是否有任何特殊字符被切断,但没有。此外,我尝试指定要阅读的内容,但它仍然在同一个地方被切断。

事情是这样的:

f=open("archives/archivelog", "r")
logtext=f.read()
print logtext
Run Code Online (Sandbox Code Playgroud)

无论我是从 bash 还是从 python 调用它,无论我是普通用户还是 root,都会发生这种情况。

但是,如果该文件与我位于同一目录中,它就可以正常工作。

f=open("archivelog", "r")
logtext=f.read()
print logtext
Run Code Online (Sandbox Code Playgroud)

这就像做梦一样。知道为什么吗?

and*_*kus 2

从 Kelketek 的回答中跳出来:

我不记得在哪里读到过这一点,但基本上 Python 垃圾收集器“偶尔”运行,不能保证给定的对象何时会被收集。该flush()函数执行相同的操作: http: //docs.python.org/library/stdtypes.html#file.flush。我收集到的是将flush()数据放入某个缓冲区中进行写入,由操作系统决定何时执行此操作。可能其中之一或两者都是您的问题。

您是否在写入文件后立即阅读该文件?这可能会导致竞争条件(http://en.wikipedia.org/wiki/Race_condition),这是一类通常很奇怪的、可能是随机的/难以重现的错误,您通常不会期望从高-级别语言,如Python。