gpt4 book ai didi

Python 子进程只传递一个参数

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:12 24 4
gpt4 key购买 nike

我有一个 Python 脚本 (2.7),我用它来调用外部进程。直到最近它运行良好。

但现在当我运行它时,我发现它没有传递进程参数。我还调试了调用的进程,它只接收单个参数(进程可执行文件的路径)。

p = subprocess.Popen(["./myapp","-p","s"],shell=True)
p.communicate()

上述代码的执行仅传递“myapp”作为命令参数。为什么会发生这种情况?

最佳答案

当使用shell=True时,只传递一个字符串(不是列表);

p = subprocess.Popen('./myapp -p s', shell=True)
p.communicate()

更新

总是喜欢;

  • shell=False(默认值)到 shell=True 并传递一个字符串数组;和
  • 可执行文件的绝对路径,而不是相对路径。

即;

with subprocess.Popen(['/path/to/binary', '-p', 's']) as proc:
stdout, stderr = proc.communicate()

如果您只对 stdout(而不是 stderr)感兴趣,请选择上面的解决方案(它更安全、更短):

stdout = subprocess.check_output(['/path/to/binary', '-p', 's'])

关于Python 子进程只传递一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24980190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com