我有一个名为0.in的输入文件.为了得到输出,我做./a.out<在
Bash Shell中.in.
现在,我有几个这样的文件(超过500个),我想使用Python的子进程模块自动执行此过程.
我试过这样做:
data=subprocess.Popen(['./a.out','< 0.in'],stdout=subprocess.PIPE,stdin=subprocess.PIPE).communicate()
使用<重定向是一个shell功能,而不是python功能. 有两种选择:
>使用shell = True并让shell处理重定向:
原文链接:https://www.f2er.com/bash/385227.html>使用shell = True并让shell处理重定向:
data = subprocess.Popen(['./a.out < 0.in'],shell=True).communicate()
>让python处理重定向:
with open('0.in') as f: data = subprocess.Popen(['./a.out'],stdin=f).communicate()
第二种选择通常是首选,因为它避免了外壳的变幻莫测.
如果要捕获数据中的stderr,则将stderr = subprocess.PIPE添加到Popen命令.否则,stderr将出现在终端上或发送python的错误消息的任何地方.