2017-09-28 73 views
-1

我有一個由多行文本組成的文本文件。只替換python中的第一行文本文件

我想只使用python v3.6替換文本文件的第一行,而不管內容如何。我不需要進行逐行搜索並相應地替換行。沒有重複的問題Search and replace a line in a file in Python

這是我的代碼;

import fileinput 

file = open("test.txt", "r+") 
file.seek(0) 
file.write("My first line") 

file.close() 

該代碼部分工作。如果原始第一行的字符串長度超過"My first line",則多餘的子字符串仍然保留。更清楚的是,如果原始行是"XXXXXXXXXXXXXXXXXXXXXXXXX",那麼輸出將是"My first lineXXXXXXXXXXXXXX"。我想輸出只有"My first line"。有沒有更好的方法來實現代碼?

+0

的[搜索和Python中的文件替換線(可能的複製https://stackoverflow.com/questions/39086/search-and-替換蟒蛇中的文件) – wwii

+0

歡迎來到SO。請花時間閱讀[問]和它包含的鏈接。 – wwii

+0

@wwii,我不認爲有重複。我編輯了這個問題。 – user3848207

回答

1

您可以使用readlines和writelines來做到這一點。 例如,我創建了一個名爲「test.txt」的文件,其中包含兩行(在Out [3]中)。打開文件後,我可以使用f.readlines()獲取字符串格式列表中的所有行。然後,我需要做的唯一事情就是將字符串的第一個元素替換爲我想要的任何內容,然後寫回。

with open("test.txt") as f: 
    lines = f.readlines() 

lines # ['This is the first line.\n', 'This is the second line.\n'] 

lines[0] = "This is the line that's replaced.\n" 

lines # ["This is the line that's replaced.\n", 'This is the second line.\n'] 

with open("test.txt", "w") as f: 
    f.writelines(lines) 
+0

請不要發佈代碼或數據的圖像。請花時間閱讀[問]和它包含的鏈接。 – wwii

+0

是不是第一次正式關閉文件而第二次打開文件的好習慣? – saintsfan342000

+0

@ saintsfan342000其實這是一個很好的觀點。我只是試圖爲所問的問題展示解決方案。你應該總是關閉文件,然後重新打開它。 –

1

讀取和寫入文件內容已由@Zhang回答。

我只是給出了效率的答案,而不是讀取所有的行。

用途:shutil.copyfileobj

from_file.readline() # and discard 
to_file.write(replacement_line) 
shutil.copyfileobj(from_file, to_file) 

Reference