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

$ 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"文件中。
问题

因为在python中,重定向和输出到控制台的内容会先被存在缓冲区中暂存,当它遇到换行符“\n”,或者缓存区的数据积累到一定的量的时候,就会将内容写到重定向的文件或者控制台中。

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

解决
  1. python的print()函数有个参数叫"flush",将它设为True,程序运行到该条输出内容时就会将缓存区的内容写出一次。即
print("abcdefghijklmnopqrst", flush=True)
  1. 命令行运行py文件的时候,加上一个命令行参数"-u"。即
python -u xxx.py args1 | tee -a data/log.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值