当我在python中打开一个文本文件来读取它时,我第一次调用f.read()
它工作正常但任何后续调用都会返回一个空字符串(''
)。即使在一行中再次使用它也会将其更改为空白字符串。
我正在阅读的文字是0到128之间的unicode字符的随机集合,如果有帮助的话。
例如:
>>> f = open("Data.txt")
>>> f.read()
'$$$\x00\x00\x11$$$'
>>> f.read()
''
>>> f.close()
造成这种情况的原因是什么?如何解决?
答案 0 :(得分:1)
实际上是预期的行为,并记录在the official documentation:
中...
如果文件的结尾已经存在 到达时,f.read()将返回一个空字符串(“”)。
它明确地给出了与你相同的例子:
>>> f.read()
'This is the entire file.\n'
>>> f.read()
''
您可以通过调用seek()
重置文件指针:
file.seek(0)
所以,在你的情况下,它将是:
>>> f = open("Data.txt")
>>> f.read()
'$$$\x00\x00\x11$$$'
>>> f.read()
''
>>> f.seek(0) # move the pointer to the beginning of the file again
>>> f.read()
'$$$\x00\x00\x11$$$'
>>> f.close()