2015-07-13 56 views
0

我想打開一個txt文件並將所有「hello」替換爲「love」並保存,並且不要創建一個新文件。只需修改同一個txt文件中的內容即可。python打開一個文件並替換內容

我的代碼只是在「你好」之後添加「愛」,而不是替代它們。

任何方法可以解決它?

THX這麼多

f = open("1.txt",'r+') 
con = f.read() 
f.write(re.sub(r'hello','Love',con)) 
f.close() 
+1

http://stackoverflow.com/questions/2424000/read-and-overwrite-a-file-in-python – Blorgbeard

+1

也許這有你的問題的答案[如何使用Python搜索和替換文件中的文本?](http://stackoverflow.com/questions/17140886/how-to-search-and-replace-text-in-a-file- using-python) – GAVD

回答

0

在閱讀文件,文件指針是在文件的結尾;如果你寫的話,你會追加到文件的末尾。你要像

f = open("1.txt", "r") # open; file pointer at start 
con = f.read()   # read; file pointer at end 
f.seek(0)    # rewind; file pointer at start 
f.write(...)   # write; file pointer somewhere else 
f.truncate()   # cut file off in case we didn't overwrite enough 
+2

不應該是'f = open('1.txt','r +')'? –

+0

@ KhalilAmmour-خليلعمور是的。 – Luke

+0

非常感謝。它現在的作品:) – Luke

0

您可以創建一個新的文件,並替換您在第一次找到所有的話,他們在第二記錄。見How to search and replace text in a file using Python?

f1 = open('file1.txt', 'r') 
f2 = open('file2.txt', 'w') 
for line in f1: 
    f2.write(line.replace('old_text', 'new_text')) 
f1.close() 
f2.close() 

或者,你可以使用fileinput

import fileinput 
for line in fileinput.FileInput("file",inplace=1): 
    line = line.replace("hello","love") 
+0

所有這一切,直到你必須用較長的一個替換一個較小的單詞。在這種情況下,您必須在內存中執行此操作,或者使用mmap模塊在運行時更改文件大小,在新位置移動字符並插入所需內容。對於其他情況,seek()tell()和truncate()會有所幫助。 – Dalen

+0

Aha,是的,要清楚的是,您可以在不使用mmap的情況下將您的文件內容移動到正確的位置,但這會更有效地殺死您和操作系統。 mmap允許您將RAM或磁盤內存用作可變字符串。 – Dalen

相關問題