相关疑难解决方法(0)

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++中的任何想法?

python subprocess popen

5
推荐指数
1
解决办法
4874
查看次数

迭代器的无限收益率

我正在努力学习一些红宝石.想象一下,我正在循环并执行一个长时间运行的过程,在这个过程中,我想在必要时获得一个微调器.

所以我能做到:

a=['|','/','-','\\']
aNow=0
# ... skip setup a big loop
print a[aNow]
aNow += 1
aNow = 0 if aNow == a.length
# ... do next step of process
print "\b"
Run Code Online (Sandbox Code Playgroud)

但我认为做得更干净:

def spinChar
  a=['|','/','-','\\']
  a.cycle{|x| yield x}
end
# ... skip setup a big loop
print spinChar
# ... do next step of process
print "\b"
Run Code Online (Sandbox Code Playgroud)

当然,spinChar调用想要一个块.如果我给它一个块,它将无限期地挂起.

我怎样才能得到这个街区的下一个?

ruby iterator infinite

4
推荐指数
3
解决办法
1500
查看次数

标签 统计

infinite ×1

iterator ×1

popen ×1

python ×1

ruby ×1

subprocess ×1