python - 调用包含 "echo"和 "|"的命令行

标签 python shell subprocess

<分区>

我尝试用Python调用命令行来执行一些文件。但是,当命令行同时包含 echo| 时,subprocess.call 似乎无法正常工作。喜欢 当我运行时:

echo "perp -t ../data/ReviewTest.text" | ./eva -b ../data/6.binlm

我会得到我想要的。 但是,当我尝试这样做时:

import subprocess
e=["echo","\"perp", "-t", "../data/R.text\"", "|", "./eva", "-b", "../data/6.binlm"]
subprocess(e)

除了在命令行中显示的 echo 之外,我将获得所有内容,例如:

".prep -t ..data/ReviewTest.text" | ./eva -b ../data/6.binlm

似乎在 subprocess.call() 中,当有一个 echo 时,它之后的所有内容都会被扔到命令行上。

我希望有一些解决方案可以让我在命令同时包含 echo| 时使用 subprocess

最佳答案

我认为这可能会达到您正在寻找的效果(它应该准确地重现您问题中列出的第一个命令行):

>>> import subprocess
>>> e = 'echo "perp -t ../data/ReviewTest.text | ./eva -b ../data/6.binlm'
>>> subprocess.call(e, shell=True)
  1. “|”是 shell 元字符,因此您需要使用 shell=True 调用 subprocess.call

  2. 在命令行中,您传递字符串 "perp -t ../data/ReviewTest.text" 作为 echo 的第一个也是唯一一个参数>,因此您需要传递相同的字符串,而不仅仅是 subprocess.call 参数字符串中的各个组件。

关于python - 调用包含 "echo"和 "|"的命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100402/

相关文章:

Python 请求开始从检查点下载文件

python:右键单击列表菜单不显示所选项目

linux - 如何将当前 git 分支的名称放入 shell 脚本中的变量中?

linux - 如何压缩有大小限制的文件?

linux - Bash 脚本 - Crontab 完成 bash 脚本的一部分但不是全部

python - 使用 Python 在 Windows 中执行文件

Python 子进程不会终止

python - 将 SIGINT 信号委托(delegate)给子进程,然后清理并终止父进程

python - 如何从数据框中删除表情符号?

python - odoo (openerp) 中的字段错误?