Bas*_*sil 5 python subprocess popen
我目前正在用C++编写的python中重写一个小包装器程序.它从文件中提取文件并以另一种格式将其打包.
在C++中,我需要运行的系统命令的输出是"实时",即状态栏和实时显示的某些命令的百分比指示器.使用python,我将每个'百分比'单独地放在屏幕上(因为我逐行读取).这是一个例子:这是一个状态栏在python版本中的样子(这一直持续到100).在C++中,它确实会更新自己.
| (02/100)\rImporting AVC-H264: | | (03/100)\rImporting AVC-H264: | | (04/100)\rImporting AVC-H264: |=
Run Code Online (Sandbox Code Playgroud)
那是相应的python代码:
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in iter(p.stdout.readline, ""):
print line,
Run Code Online (Sandbox Code Playgroud)
关于如何使它看起来像在C++中的任何想法?
可能是两件事......
readline可能正在改变程序输出中的一些内容.我相信\r
是回车,并告诉终端返回行的开头,然后该程序可以凌驾文本输出,它只是输出.Readline最有可能删除它.
首先要尝试,
p = subprocess.Popen(args, stdout=subprocess.PIPE, \
stderr=subprocess.PIPE, \
universal_newlines=True)
for line in iter(p.stdout.readline, ""):
sys.stdout.write('\r'+line[:-1])
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
你必须进行刷新,因为stdout缓冲直到它得到一个\n
,当然你不是写一个.
归档时间: |
|
查看次数: |
4874 次 |
最近记录: |