os.system(cmd)与终端中的cmd不同

时间:2015-03-27 15:54:09

标签: python bash shell unix ubuntu

为什么此代码在终端(Ubuntu 12.04)中成功运行:

python -c "print 123" > >(tee stdout.txt)

但是python中的这段代码(2.7.5):

import os
os.system('python -c "print 123" > >(tee stdout.txt)') # same command

会产生此错误吗?

sh: -c: line 0: syntax error near unexpected token `>'
sh: -c: line 0: `python -c "print 123" > >(tee stdout.txt)'

1 个答案:

答案 0 :(得分:3)

os.system调用sh,但不支持bash' >(process substitution)

出于兼容性原因,即使sh提供了bash,也是如此。

相反,请明确运行bash:

import subprocess
subprocess.call(["bash", "-c", 'python -c "print 123" > >(tee stdout.txt)'])