簡體   English   中英

寫入文件然后在Python 3.6.2上讀取它

[英]Writing into a file then reading it on Python 3.6.2

target=open("test.txt",'w+')
target.write('ffff')
print(target.read())

運行以下python腳本(test.txt是一個空文件)時,它會打印一個空字符串。

但是,重新打開文件時,它可以正常讀取它:

target=open("test.txt",'w+')
target.write('ffff')
target=open("test.txt",'r')
print(target.read())

這會根據需要打印出'ffff'。

為什么會這樣? “目標”仍然被認為沒有內容,即使我在第2行更新了它,我還要將test.txt重新分配給它嗎?

文件具有讀/寫位置。 寫入文件會將該位置放在書面文本的末尾; 閱讀從同一個位置開始。

使用seek方法將該位置放回到開頭:

with open("test.txt",'w+') as target:
    target.write('ffff')
    target.seek(0)  # to the start again
    print(target.read())

演示:

>>> with open("test.txt",'w+') as target:
...     target.write('ffff')
...     target.seek(0)  # to the start again
...     print(target.read())
...
4
0
ffff

數字是target.write()target.seek()的返回值; 它們是寫入的字符數和新位置。

無需關閉並重新打開它。 你只需要在閱讀之前回到文件的起點:

with open("test.txt",'w+') as f:
    f.write('ffff')
    f.seek(0)
    print(f.read())

嘗試刷新,然后尋找文件的開頭:

f = open(path, 'w+')
f.write('foo')
f.write('bar')
f.flush()
f.seek(0)
print(f.read())

你必須在閱讀之前close()文件。 您無法同時讀取和寫入文件。 這會導致不一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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