gpt4 book ai didi

python - shell = False 时子进程如何使用命令

转载 作者:行者123 更新时间:2023-11-28 17:23:38 24 4
gpt4 key购买 nike

我能够运行这段代码:

subprocess.call(" ./ApiStreamingClient.py -w flow-index -n admin -p admin localhost 1477389500000000000 1477389900000000000 | gzip - > out2.gz", shell=True)

但我想分两步使用选项 shell=False 运行它。我怎样才能做到这一点?我找不到任何简单的例子。

我想我需要将命令分成由 | 分隔的两部分,但我不明白如何操作。

最佳答案

我会这样做:

import gzip
import subprocess
import sys

command = [
sys.executable,
'ApiStreamingClient.py',
'-w', 'flow-index',
'-n', 'admin',
'-p', 'admin',
'localhost',
'1477389500000000000',
'1477389900000000000',
]
text = subprocess.check_output(command)
with gzip.open('out2.gz', 'w', 6) as outfile:
outfile.write(text)

请注意,如果没有 shell,您不能只将 Python 脚本作为可执行文件调用——您需要直接调用 python 并将脚本作为参数传递。但这很容易。

如果你想以流方式完成整个事情(例如,如果 text 占用太多内存),你可以使用 stdout=subprocess.PIPE 来获得一个处理读取,并将其传递给 shutil.copyfileobj(),而不是一次性写入 text

关于python - shell = False 时子进程如何使用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242609/

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