我有以下代码,它通过进行正则表达式替换来修改文件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