Python 中如何一个 print 语句同时输出到屏幕且记录到文件里

2017-09-06 22:40:02 +08:00
 gaayyy

有一个第三方提供的脚本,一直在用,里面很多功能也封装的很好。唯一的缺憾就是他没有使用 log 模块,全部是 print 语句输出。

现在老板想把所有 print 的输出全部实时的保存到一个文本文件中,又不能影响现有的屏幕输出,感觉比较困难。

我试过用管道重定向:python cudaCFD.py > result.txt 发现只有在最后程序全部退出的时候才会把输出一次性写入到这个 result.txt 文件里面,而且这个方法也不能同时在屏幕的命令行中输出。

希望各位 python 大佬指导一下,谢谢。

21613 次点击
所在节点    程序员
23 条回复
gaayyy
2017-09-08 21:37:50 +08:00
@Osk 是的,要满 4k 才写入文件,这个当时直接重定向就发现了。。。 感谢大佬的详细解释。

@gouchaoer 感谢大佬指点,2>&1 是把 stderr 也重定向到 stdout 吧。Linux 下面的小工具是真心好用,不过我们这套东西有时候还要在 windows 下面用,毕竟 nvidia 的官配是 windows 平台。JS 我这种萌新不适合,太容易掉坑里了。
qq191513
2018-08-13 22:43:59 +08:00
拿走不用谢我~
def print_and_save_txt(str=None,filename=r'log.txt'):
with open(filename, "a+") as log_writter:
print(str)
log_writter.write(str)
oldbird
2021-02-28 09:36:00 +08:00
@gaayyy 请问最后如何做到实时写入文件和屏幕显示的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/388763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX