我试图在python控制台上输出注释,同时保存到文本文件中,它应该递归运行。我找到了一个代码并进行了修改:
import sys
def write(input_text):
print("Coming through stdout")
# stdout is saved
save_stdout = sys.stdout
fh = open(path,"w")
sys.stdout = fh
print(input_text)
# return to normal:
sys.stdout = save_stdout
fh.close()
def testing():
write('go')
我重复使用此命令,它只保存了最后收到的打印数据。任何线索? 感谢
答案 0 :(得分:1)
你通过了' w'模式到open
功能,删除文件中的任何内容。
你应该使用' a'附加在文件中的模式。
顺便说一句,你应该考虑使用带有两个处理程序的logging
模块。一个写入stdout,另一个写入文件。请参阅python文档中的logging handlers。
答案 1 :(得分:1)
你需要的只是(假设"路径"已经定义):
def print_twice(*args,**kwargs):
print(*args,**kwargs)
with open(path,"a") as f: # appends to file and closes it when finished
print(file=f,*args,**kwargs)
完全相同的东西将被打印并写入文件。记录模块对于这个简单的任务来说太过分了。
请告诉我,您实际上并不认为在Python中将数据写入文件需要像在代码中一样使用stdout。那太荒谬了。
答案 2 :(得分:0)
如果您想在屏幕上看到输出并将其保存到文本文件中,那么:
python <your-script-name> | tee output.txt
可以将“ output.txt”更改为所需的任何文件名。如果我误解了您的问题,请忽略。