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)
这就像做梦一样。知道为什么吗?
从 Kelketek 的回答中跳出来:
我不记得在哪里读到过这一点,但基本上 Python 垃圾收集器“偶尔”运行,不能保证给定的对象何时会被收集。该flush()函数执行相同的操作: http: //docs.python.org/library/stdtypes.html#file.flush。我收集到的是将flush()数据放入某个缓冲区中进行写入,由操作系统决定何时执行此操作。可能其中之一或两者都是您的问题。
您是否在写入文件后立即阅读该文件?这可能会导致竞争条件(http://en.wikipedia.org/wiki/Race_condition),这是一类通常很奇怪的、可能是随机的/难以重现的错误,您通常不会期望从高-级别语言,如Python。