python修改文件内容最后一行_关于python:如何修改文件的最后一行?
我文件的最后一行是:
29-dez,40,
號
如何修改該行,使其顯示:
29-Dez,40,90,100,50
號
注意:我不想寫新行。我想在29-Dez,40,后面加一行新值。
我是Python的新手。我在處理文件時遇到了很多困難,對于我來說,我看到的每一個例子似乎都很困難。
很難,因為很難。對于具有可變長度行的文本文件,您所做的并不真正明智。
請參閱stackoverflow.com/questions/328059/…,了解此問題的后續操作。
我對你的問題作了相當大的修改,如果我誤解了什么,請告訴我。S.lott也是對的,雖然看起來應該很簡單,但是修改一個文件實際上是相當困難的。
除非文件很大,否則您可能會發現將整個文件讀取到數據結構(可能只是行列表)中會更容易,然后在內存中修改數據結構,最后將其寫回文件。
另一方面,您的文件可能真的很大-至少有多個GBS。在這種情況下:最后一行可能以一個新行字符結束,如果您尋求該位置,您可以在最后一行末尾用新文本覆蓋它。
所以也許:
f = open("foo.file","wb")
f.seek(-len(os.linesep), os.SEEK_END)
f.write("new text at end of last line" + os.linesep)
f.close()
(不同平臺上的模線端)
對于python 3.2及更高版本,只能從文件(文本文件)的開頭執行SEEK操作。
要擴展Doug所說的內容,為了將文件內容讀取到數據結構中,可以使用文件對象的readlines()方法。
下面的代碼示例將文件讀取到"行"列表中,編輯最后一行,然后將其寫回文件:
#!/usr/bin/python
MYFILE="file.txt"
# read the file into a list of lines
lines = open(MYFILE, 'r').readlines()
# now edit the last line of the list of lines
new_last_line = (lines[-1].rstrip() +",90,100,50")
lines[-1] = new_last_line
# now write the modified list back out to the file
open(MYFILE, 'w').writelines(lines)
號
如果文件非常大,那么這種方法將無法很好地工作,因為這樣每次都會將所有的文件行讀取到內存中,并將它們寫回文件中,這是非常低效的。不過,對于一個小文件來說,這很好。
我最近寫了一個腳本來做類似的事情。它將遍歷一個項目,查找所有模塊依賴項,并添加任何缺少的導入語句。我不會把這篇文章和整個腳本搞混,但我會展示我是如何修改我的文件的。
import os
from mmap import mmap
def insert_import(filename, text):
if len(text) < 1:
return
f = open(filename, 'r+')
m = mmap(f.fileno(), os.path.getsize(filename))
origSize = m.size()
m.resize(origSize + len(text))
pos = 0
while True:
l = m.readline()
if l.startswith(('import', 'from')):
continue
else:
pos = m.tell() - len(l)
break
m[pos+len(text):] = m[pos:origSize]
m[pos:pos+len(text)] = text
m.close()
f.close()
摘要:此代碼段接受要插入的文件名和文本塊。它找到已經存在的最后一個導入語句,并將文本粘貼到該位置。
我建議最關注的部分是MMAP的使用。它允許您以處理字符串的相同方式處理文件。非常方便。
不要直接處理文件,以類的形式創建一個適合您需要的數據結構,并對文件方法進行讀/寫。
總結
以上是生活随笔為你收集整理的python修改文件内容最后一行_关于python:如何修改文件的最后一行?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python中的解析式是什么_初学pyt
- 下一篇: python分类算法报告_Python机
