2013-07-30 42 views
0

我一直在試圖做到這一點,但我對Python很陌生,無法弄清楚如何使它工作。我無法爲Python製作搜索替換腳本

我有這樣的:

import fileinput 
for line in fileinput.input(['tooltips.txt'], inplace=True, backup="bak.txt"): 
    line.replace("oldString1", "newString1") 
    line.replace("oldString2", "newString2") 

,但它只是刪除一切從TXT。

我在做什麼錯?

我試圖與打印(line.replace(「oldString1」,「newString1」) ,但正如我所說的它不會刪除現有的單詞。

,我在此很新。 !謝謝

+0

'inplace' pipe'stdout'輸入文件。你必須「打印」結果行。 – Blender

回答

0

line.replace()不會修改line返回修改過的字符串

import fileinput, sys 

for line in fileinput.input(['tooltips.txt'], inplace=True, backup="bak.txt"): 
    sys.stdout.write(line.replace("oldString1", "newString1")) 
+0

這會從文件中刪除文本,只是打印出答案。對我來說,似乎很清楚他想替換實際文件 –

+0

@DanielWaltrip中的文本,'fileinput'在運行時替代'sys.stdout',並在完成時將其設置回。你必須將它稱爲'sys.stdout',因爲之前對'stdout'的引用不會涉及正確的文件 –

+1

@kashbel我期望的是,你從第一次運行後的第一次嘗試中刪除了文件你有'inplace = True'這會讓你的輸入文件變空......你檢查過了嗎? –

0

一個簡單的方法做,這是與open功能和os模塊:

import os 
with open(tmp_file) as tmp: 
    with open(my_file) as f: 
     for line in f.readlines(): 
      tmp.write(line.replace("oldString1", "newString1").replace("oldString2", "newString2") + "\n") 
os.remove(my_file) 
os.rename(tmp_file, my_file)