问题是写入文件后它是空的,我不明白为什么。这是我的代码:
self.f = tempfile.NamedTemporaryFile(delete=False)
for i in range(self.num_chars_file):
self.f.write(str(i))
reader_writer.testfile = self.f.name
print '************************'
print self.f.read()
为什么会发生这种情况,以及如何纠正这个问题?
答案 0 :(得分:3)
您应该将文件位置移到开头。
print '************************'
self.f.seek(0) # <--------
print self.f.read()
否则,文件位置位于文件的末尾(文件写入的位置)
答案 1 :(得分:2)
如果您想再次阅读相同的数据,则需要回头查看:
self.f.seek(0)
print self.f.read()
文件对象是线性的,就像磁带一样,并且具有“当前位置”。当您写入文件时,当前位置会移动,以便在该位置进行新写入,再次向前移动位置。这同样适用于阅读。
因此,写完后,文件位置就在文件的末尾。尝试在不移动文件位置的情况下进行读取意味着不会再找到数据。 file.seek()
将当前文件位置移动到其他位置; file.seek(0)
将其移回文件的开头。