我尝试了几种不同的方法,但结果似乎总是相同的。在此处的文件末尾之前,我无法让 Python 读取。它只在中途停止。我尝试过二进制和 ASCII 模式,但是这两种模式都有相同的结果。我还检查了文件中是否有任何特殊字符被切断,但没有。此外,我尝试指定要阅读的内容,但它仍然在同一个地方切断。
它是这样的:
f=open("archives/archivelog", "r")
logtext=f.read()
print logtext
无论我是从 bash 还是从 python 调用它,无论我是普通用户还是 root,都会发生这种情况。
但是,如果文件与我在同一目录中,它可以正常工作。
f=open("archivelog", "r")
logtext=f.read()
print logtext
这就像做梦一样。知道为什么吗?
最佳答案
从 Kelketek 的回答中跳出来:
我不记得我在哪里读到的,但基本上 Python 垃圾收集器“偶尔”运行,不能保证何时收集给定的对象。 flush()
函数执行相同的操作: http://docs.python.org/library/stdtypes.html#file.flush 。我收集到的是 flush()
将数据放在某个缓冲区中进行写入,由您的操作系统决定何时执行此操作。可能其中之一或两者都是您的问题。
写入文件后您是否立即读取文件?这可能会导致竞争条件 (http://en.wikipedia.org/wiki/Race_condition),这是一类通常很奇怪、可能是随机/难以重现的错误,您通常不会从 Python 等高级语言中获得这些错误。
关于python - 直到文件末尾才能让 Python 读取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7297220/