我有以下代碼,它通過進行正則表達式替換來修改文件test.tex的每一行。Python使用標準輸出和文件輸入寫入文件
import re
import fileinput
regex=re.compile(r'^([^&]*)(&)([^&]*)(&)([^&]*)')
for line in fileinput.input('test.tex',inplace=1):
print regex.sub(r'\3\2\1\4\5',line),
唯一的問題是,我只想替換應用到文件中的某些行,而且也沒有辦法定義一個模式來選擇正確的線路。因此,我想要顯示每行並在命令行中提示用戶,詢問是否在當前行進行替換。如果用戶輸入「y」,則進行替換。如果用戶根本沒有輸入任何內容,則替換爲而不是。
問題當然是,通過使用代碼inplace=1
我已經有效地將stdout重定向到打開的文件。所以沒有辦法顯示輸出(例如詢問是否進行替換)到沒有發送到文件的命令行。
任何想法?
使用stderr ..... –
'fileinput'不是這個工作的正確工具。只需使用標準的讀取 - 修改 - 寫入模式 –
@EliBendersky您能否指點我做一個提及的例子?對不起,我對Python很陌生。 – synaptik