子过程:调用带有两个输入重定向的程序

问题描述

我正在尝试运行以下命令,其中AAABBB是包含一堆多行数据的Python变量。

我不想通过将变量写入磁盘来减慢速度。似乎subprocess.Popen应该以某种方式支持这一点。

diff <(echo AAA) <(echo BBB)

我知道我不了解它在shell级别上的工作方式有一个微妙之处,这可能会使它变得轻而易举。

如何使用子进程在Python中使用一个包含两个Python变量的输入重定向调用一个shell可执行文件

解决方法

这能达到您想要的吗?

import os
import subprocess

os.environ['aaa'] = """This is python multiline data containing
AAA"""
os.environ['bbb'] = """This is python multiline data containing
BBB"""
process = subprocess.Popen(['/bin/bash','-c','diff <(echo "$aaa") <(echo "$bbb")'])
process.communicate()