我有这个简单的代码,其中每个迭代都覆盖前一行的输出:
import time
for i in reversed(range (12)):
print i, '\r',
time.sleep(0.2)
当我使用命令运行脚本时:python test.py
我看到输出在每次迭代中都按预期替换了自己。但是,当我使用以下命令将输出重定向到文件时:
python test.py >> tmp.txt
我得到一个文件,其中包含12条单独的行中的所有12个数字。
如何在输出文件中获得与从命令行运行脚本相同的最终结果?
我在Windows 10上使用python 2.6.5
您不能这样做,因为重定向会将数据附加到文件的末尾。
写的是书面的。
编辑:但是有解决方法。
import time,sys
interactive = sys.stdout.isatty()
for i in reversed(range (12)):
if i==0 or interactive:
print i, '\r',
time.sleep(0.2)
重定向到文件时,它将仅打印0
。如果在没有重定向的情况下运行,它将执行与以前相同的操作。
如果您运行的是安装了MSYS的Linux或Windows,只需将输出通过管道传递给类似以下命令 cat
python test.py | cat >> tmp.txt
仅0
将回显到文件
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句