我有行
for line in fileinput.input(file_full_path, inplace=True):
newline, count = re.subn(search_str, replace_str, line.rstrip())
# ... display some messages to console ...
print newline # this is sent to the file_full_path
应该替换文件search_str
中出现的所有file_full_path
,并将其替换为replace_str
。 fileinput
将stdout
映射到给定文件。因此,print newline
和发送到sys.stdout
的内容会被发送到文件而不是控制台。
我想在此过程中,向控制台显示一些消息,例如我可以显示替换将要发生的行的部分,或者其他一些消息,然后继续将print newline
放入文件中。怎么做?
答案 0 :(得分:5)
来自Python文档:
可选的就地过滤:如果关键字参数inplace = 1是 传递给fileinput.input()或FileInput构造函数,该文件 移动到备份文件,标准输出定向到输入 文件(如果与备份文件同名的文件已存在,则为 将被默默地替换。)
因此您应该写入stderr以在控制台中显示消息,如下所示:
import sys
for line in fileinput.input(file_full_path, inplace=True):
newline, count = re.subn(search_str, replace_str, line.rstrip())
sys.stderr.write("your message here")
print newline