为什么此代码在终端(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)'
答案 0 :(得分:3)
os.system
调用sh
,但不支持bash' >(process substitution)
。
出于兼容性原因,即使sh
提供了bash
,也是如此。
相反,请明确运行bash:
import subprocess
subprocess.call(["bash", "-c", 'python -c "print 123" > >(tee stdout.txt)'])