![](/img/trans.png)
[英]Python3: f.read() in Tarfile returns bytes instead of a file-like object and it passes empty file
[英]After writing to file f, calling f.read() returns None
問題是寫入文件后它是空的,我不明白為什么。 這是我的代碼:
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()
為什么會發生這種情況,以及如何糾正這種情況?
您應該將文件位置移到開頭。
print '************************'
self.f.seek(0) # <--------
print self.f.read()
否則,文件位置在文件末尾(完成文件寫入的位置)
如果要再次讀回相同的數據,則需要重新開始:
self.f.seek(0)
print self.f.read()
文件對象是線性的,就像磁帶一樣,並且具有“當前位置”。 當您寫入文件時,當前位置會隨之移動,以便在該位置進行新的寫入,並再次向前移動該位置。 閱讀同樣如此。
因此,寫入后,文件位置就在文件末尾。 嘗試在不移動文件位置的情況下進行讀取意味着將找不到更多數據。 file.seek()
將當前文件位置移動到其他位置; file.seek(0)
將其移回到文件的開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.