Python 子进程和 shell 输入重定向

标签 python shell python-3.x subprocess io-redirection

在 unix 命令行上我可以做:

paste <(echo A) <(echo B)

但是,当我尝试这样做时:

import subprocess
subprocess.call('paste <(echo A) <(echo B)', shell = True)

我收到这个错误:

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `paste <(echo A) <(echo B)'

是否不能使用子进程模块进行 shell 输入重定向?

最佳答案

许多东西默认使用 /bin/sh 作为选择的 shell。 /bin/sh 通常不是 bash。

您系统上的 /bin/sh 很可能不支持进程替换。

说服 subprocess.call 使用 /bin/bash 作为 shell,它应该可以工作。

关于Python 子进程和 shell 输入重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911325/

相关文章:

python - 如何在 python 中从 yaml 存储或读取文字回车符和换行符

python - PyQT5 中的信号/槽不起作用,因为数组对于函数不可见

python - 在 Python 2.6 中使用 JSON?

python - Networkx:替换节点标签

python - 使用 VapourSynth ffms2 插件获取视频帧的时间戳

bash - Bash 命令中单引号内变量的扩展

shell - 我可以在 unix 脚本中调用 ssh 中的函数吗

linux - bash 中 expr 的语法错误

python - Tkinter:抓取和焦点有什么区别?

Python 3.5.2 : a class unexpectedly changes a global variable