我想用popen创建一个子进程。 特殊要求是在命令中使用shell方向。
args = [
'/bin/cat',
'<',
'textfile',
]
process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
env={'LANG':'de_DE@euro'})
processpid = process.pid
output = process.communicate()
我不想使用shell = True选项,因此我在这里向您提出问题,如何实现它。
此致 斯蒂芬
答案 0 :(得分:9)
除非您正在调用的程序实现重定向(cat
没有),否则不可能。要使用shell功能,您必须传递shell=True
或明确调用shell。
OTOH,如果您只想阅读textfile
,可以将其作为子流程stdin
传递:
subprocess.Popen(args,
stdin=open("textfile"),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env={'LANG':'de_DE@euro'})