我是python的新手,並試圖逐行讀取文件,並在每行末尾附加一個字。 「打印行」表示所需的單詞已附加,但沒有根據需要將相同的內容寫回文件。感謝你的幫助。逐行讀取文件並追加字
#!/usr/bin/python
f=open('test1', 'r+')
for line in f:
line=line.strip("\n")
line=line +" " + 'test2'
print line
f.write(line)
f.close()
我是python的新手,並試圖逐行讀取文件,並在每行末尾附加一個字。 「打印行」表示所需的單詞已附加,但沒有根據需要將相同的內容寫回文件。感謝你的幫助。逐行讀取文件並追加字
#!/usr/bin/python
f=open('test1', 'r+')
for line in f:
line=line.strip("\n")
line=line +" " + 'test2'
print line
f.write(line)
f.close()
一般來說,讀/同時寫一個文件是一個非常可怕的困難的事情得到的權利。通常,您將從一個文件中讀取數據並寫入其他文件(可能位於內存中)。在內存中的執行將是這樣的:
with open('test1', 'r') as fin:
lines = [line.strip('\n') + ' test2\n' for line in fin]
with open('test1', 'w') as fout:
fout.writelines(lines)
請注意,我在第一with
塊讀取文件的所有數據到內存中。在第二個with
塊中,我將所有這些數據寫回到一個新文件中(該文件的名稱與舊文件的名稱相同,有效覆蓋舊文件)。當然,如果內存有問題,您可以讀取一行,然後將一行寫入新文件(使用不同的名稱)。關閉並刷新兩個文件後,可以使用shutil.move
重命名新文件,以便覆蓋舊文件。
mgilson的代碼有點不對。更正:
with open("test1", "r") as f:
new_contents = [line.strip() + "test2" for line in f.readlines()]
with open("test1", "w") as f:
f.write("\n".join(new_contents))
mgilson給出的代碼非常棒!但是,如果您同時讀取和追加,則您請求的功能是不可能的。
我太新了python。 因此,我發現自己更舒適的語法如下。
# read in
f = open('test1', 'r')
newlines = []
for line in f:
newline = line.strip("\n") + " " + 'test2' + "\n"
newlines.append(newline)
print newline,
f.close()
# overwrite the same file
f = open('test1', 'w')
f.writelines(newlines)
f.close()
非常感謝您的支持團隊 – user3436288