带有&符号的Python子进程问题

标签 python windows subprocess command-line-arguments

我目前遇到一个 python 脚本的主要问题。该脚本通过处理程序运行任意命令,将不正确的错误报告转换为正确的错误报告。

我遇到的问题是使用路径中包含 & 符号的命令让脚本在 Windows 上正常工作。我尝试引用命令,用 ^ 转义与号,但都不起作用。我现在没主意了。有什么建议吗?

从当前的回复中澄清:

  1. 我正在使用子流程模块
  2. 我将命令行 + 参数作为列表传递
  3. 问题出在命令本身的路径上,而不是任何参数上
  4. 我试过引用命令。它会导致 [Error 123] The filename, directory name, or volume label syntax is incorrect 错误
  5. 我没有使用 shell 参数(所以 shell=false)
  6. 以防万一,我正在抓取一个管道到 stderr 进行处理,但忽略 stdout 和 stdin
  7. 它目前仅适用于 Windows,并且在我目前测试过的所有其他情况下都能按预期工作。
  8. 失败的命令是:

p = subprocess.Popen(prog, stderr = subprocess.PIPE, bufsize=-1)

当列表 'prog' 的第一个元素包含任何 & 符号时。引用第一个字符串不起作用。

最佳答案

确保您使用的是列表并且没有 shell 扩展:

subprocess.Popen(['command', 'argument1', 'argument2'], shell=False)

关于带有&符号的Python子进程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120657/

相关文章:

python - 使用 Seaborn 将一维时间序列绘制为一条线,并沿 y 轴绘制边缘直方图

python - py2exe:为什么不包括一些标准模块?

python - 在运行时之前安排任务的方法

python - 防止python窗口被聚焦

python - 64位Python可以连接32位MS访问驱动程序吗?

python - 为什么小写 'p' 大于大写 'P' ?

python:读取线程中的子进程输出

python - 运行 shell 命令并捕获输出

python - 期间停止 Python 中的多行正则表达式替代?

java - 批处理文件如何接受 Java 的参数?