bash – 使用Python子进程模块将输入传递给可执行文件

前端之家收集整理的这篇文章主要介绍了bash – 使用Python子进程模块将输入传递给可执行文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为0.in的输入文件.为了得到输出,我做./a.out<在 Bash Shell中.in.

现在,我有几个这样的文件(超过500个),我想使用Python的子进程模块自动执行此过程.

我试过这样做:

data=subprocess.Popen(['./a.out','< 0.in'],stdout=subprocess.PIPE,stdin=subprocess.PIPE).communicate()

当我运行它时,没有打印任何内容(数据[0]为空白).做我想做的事的正确方法是什么?

使用<重定向是一个shell功能,而不是python功能. 有两种选择:
>使用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的错误消息的任何地方.

猜你在找的Bash相关文章