python程序命令行输出记录到log文件中

本文介绍了如何使用Linux命令将Python程序的print输出重定向到文件,并通过`tee`命令实现实时显示到控制台。针对print内容延迟显示的问题,提出了设置`flush=True`参数和使用`python -u`命令行选项的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$ python xxx.py args1 >> data/log.txt
 第一条命令的含义是:将xxx.py这个python文件中print()原本输出到console的内容重定向到"data/log.txt"文件中。(“>>”是追加,“>”是直接写入,即会发生覆盖);
$ python xxx.py args1 | tee -a data/log.txt
第二条命令使用了tee命令,在保证xxx.py文件运行时将print内容输出到控制台的同时,还把这些内容保存在"data/log.txt"文件中。
1
2
3
4
问题
因为在python中,重定向和输出到控制台的内容会先被存在缓冲区中暂存,当它遇到换行符“\n”,或者缓存区的数据积累到一定的量的时候,就会将内容写到重定向的文件或者控制台中。

所以有的时候会发生比较蛋疼的情况,那就是可能要间隔很久,你才会看到你的"data/log.txt"中有内容;或者控制台才有内容显示。

解决
python的print()函数有个参数叫"flush",将它设为True,程序运行到该条输出内容时就会将缓存区的内容写出一次。即
print("abcdefghijklmnopqrst", flush=True)
1
命令行运行py文件的时候,加上一个命令行参数"-u"。即
python -u xxx.py args1 | tee -a data/log.txt
————————————————
版权声明:本文为CSDN博主「orzchenyuming」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29936933/article/details/110949949

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值