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