在文件结束之前无法让Python读取

我尝试了几种不同的方法,但结果似乎总是一样的.在这里文件结束之前,我无法让Python阅读.它只停止了一半左右.我尝试过二进制和ASCII模式,但这两种模式都有相同的结果.我还检查了文件中切断的任何特殊字符,但没有.另外,我已经尝试指定读取多少,但它仍然在同一个地方切断.

它是这样的:

f=open("archives/archivelog", "r")
logtext=f.read()
print logtext

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

但是,如果文件与我在同一目录中,它可以正常工作.

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这样的高级语言.

上一篇:基于JAVA的设计模式之组合模式


下一篇:shell中$(cd "$(dirname "$0")",pwd) 解析