带有更大符号 (>) 的 Python 子进程调用不起作用

标签 python subprocess popen

<分区>

我有一个接受字符串并输出另一个字符串的可执行文件。现在我需要将一个文件作为输入提供给它,并将输出写入另一个文件。标准命令类似于以下 executable_path < input > output .现在我用 python 包装它。但我得到错误。

 cmd = [executable_path , '<', 'tmp/input.txt', '>',
           'tmp/output.txt']
    p = subprocess.Popen(cmd)
    p.communicate()

invalid argument: <

我还尝试加入 cmd 参数:

cmd = [executable_path, ' '.join(['<', 'tmp/input.txt', '>',
       'tmp/output.txt'])]

invalid argument: < tmp/input.txt > tmp/output.txt

将命令作为字符串传递也不起作用。

 p = subprocess.Popen(' '.join(cmd))

OSError: [Errno 2] No such file or directory

我在这里错过了什么?

最佳答案

重定向(<>)由 shell 解释。您需要指定 shell=True使用它们。

cmd = [executable_path , '<', 'tmp/input.txt', '>', 'tmp/output.txt']
p = subprocess.Popen(cmd, shell=True)
p.communicate()

关于带有更大符号 (>) 的 Python 子进程调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248282/

相关文章:

python - 为 Python 3.6 安装 GDAL 时出现 ImportError

python - 使用库时缩短大堆栈跟踪

python - Django:跨子模型字段聚合

python - subprocess.Popen 产生错误,而命令在命令行中运行顺利(错误 : find: paths must precedeexpression)

python - 使用子进程调用时 Curl 不起作用

python - web.py + 子进程 = 挂起

python - 将 ROC AUC 分数与 Logistic 回归和 Iris 数据集结合使用

video - FFMPEG-无法为输出文件 #0 写入 header (编解码器参数不正确?): Operation not permitted Error initializing output stream 0:2 --

python - 如何使用 shell = true 通过 Python subprocess.Popen() 将 SIGINT 传递给子进程

lua - io.popen() :lines() ignores first non-empty line