簡體   English   中英

寫入文件f后,調用f.read()返回None

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM