我目前遇到一个 python 脚本的主要问题。该脚本通过处理程序运行任意命令,将不正确的错误报告转换为正确的错误报告。
我遇到的问题是使用路径中包含 & 符号的命令让脚本在 Windows 上正常工作。我尝试引用命令,用 ^ 转义与号,但都不起作用。我现在没主意了。有什么建议吗?
从当前的回复中澄清:
- 我正在使用子流程模块
- 我将命令行 + 参数作为列表传递
- 问题出在命令本身的路径上,而不是任何参数上
- 我试过引用命令。它会导致
[Error 123] The filename, directory name, or volume label syntax is incorrect
错误 - 我没有使用 shell 参数(所以
shell=false
) - 以防万一,我正在抓取一个管道到 stderr 进行处理,但忽略 stdout 和 stdin
- 它目前仅适用于 Windows,并且在我目前测试过的所有其他情况下都能按预期工作。
- 失败的命令是:
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/