我有以下命令在shell中运行:
$ pv itunes20140910.tbz | sudo tar xpj -C /tmp
然而,当我尝试在python中执行它时,它不起作用:
>>> import subprocess
>>> import shlex
>>> cmd=shlex.split('pv itunes20140910.tbz | sudo tar xpj -C /tmp')
>>> subprocess.call(cmd)
pv: invalid option -- 'C'
Try `pv --help' for more information.
1
我在这里做错了什么,以及在python中运行的正确命令是什么?
答案 0 :(得分:1)
上面的答案并没有我所寻找的结果(进度条)的净效果,尽管命令会运行没有错误。这对我有用:
>>> import shlex, subprocess
>>> p1 = subprocess.Popen(shlex.split('pv /tmp/itunes20140910.tbz'), stdout=subprocess.PIPE) #Set up the echo command and direct the output to a pipe
>>> subprocess.Popen(shlex.split('sudo tar xpj -C /tmp'), stdin=p1.stdout) #send p1's output to p2
答案 1 :(得分:0)
使用shell=True
参数。否则|
无法解释。
subprocess.call('pv itunes20140910.tbz | sudo tar xpj -C /tmp', shell=True)