在一個文件的末尾追加數據是很常用的。在使用過程中應該都比較熟悉不會出現什么錯誤。但是往一個文件頭部插入數據可能或多或少會碰到一些問題。
看似正確的錯誤代碼
很多代碼看似正確,但是其實都是錯的。一起來看下這些代碼
1、看似正確的錯誤代碼1
with open(path, "r+") as f: f.seek(0) f.write(data)
確實是從頭寫了,而且有些原有數據確實在,但是數據有問題。。。。
因為”r+”方式寫文件操作沒有插入的語義,只有寫文件的含義,原來位置如果有數據,不會后移的,是覆蓋掉了。。。。所以,你可能會看到一些老的數據。不仔細辨別可能就天真地以為成功了。。。
2、看似正確的錯誤代碼2
with open(path, "w+") as f: old = f.read() f.seek(0) f.write(data) f.write(old)
你讀取到的數據永遠為空。。。。
因為”w+”的含義就是截取長度為0然后寫入文件。
3、看似正確的錯誤代碼3
with open(path, "a+") as f: old = f.read() #f.truncate(0) #取消掉注釋成正確代碼 f.seek(0) f.write(data)
寫入的數據永遠出現在文件末尾。。。。。
要打破魔咒的話要先將文件截斷成0字節。。。。
snack:想要”a+”的效果變”r+”,在讀之前先seek(0),在寫之前要truncate一下,確保要寫入的位置是文件的末尾。
正確的代碼
with open(path, "r+") as f: old = f.read() f.seek(0) f.write(data) f.write(old)
原理思路:讀出原有文件內容,移動索引到開始,寫入新的數據,然后寫入舊的數據。
以上這篇利用Python在一個文件的頭部插入數據的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答