首页 > 解决方案 > 子进程:调用具有两个输入重定向的程序

问题描述

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

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

diff <(echo AAA) <(echo BBB)

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

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

标签: pythonbashsubprocessio-redirection

解决方案


这是否达到你想要的?

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()

推荐阅读