gpt4 book ai didi

python 子进程正在交互模式下工作,但不是脚本模式

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:09 25 4
gpt4 key购买 nike

在 Windows 中我必须执行如下命令:

process = subprocess.Popen([r'C:\Program Files (x86)\xxx\xxx.exe', '-n', '@iseasn2a7.sd.xxxx.com:3944#dc', '-d', r'D:\test\file.txt'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
process.communicate()

这在 python 交互模式下工作正常,但根本不能从 python 脚本执行。

可能是什么问题?

最佳答案

Popen.communicate本身不打印任何内容,但它返回 stdout、stderr 输出。除此之外,因为代码在创建 Popen 时指定了 stdout=PIPE, stderr=...,所以它捕获输出(不会让子进程直接将输出打印到父进程的标准输出)

需要手动打印返回值:

process = ....
output, error = process.communicate()
print output

如果您不希望这样,请不要通过省略 stdout=PIPE, stderr=... 来捕获 stdout 输出。

然后,您不需要使用沟通,而只需等待:

process = subprocess.Popen([...], shell=True)
process.wait()

或者,您可以使用 subprocess.call 来执行子进程并等待其终止:

subprocess.call([...], shell=True)

关于python 子进程正在交互模式下工作,但不是脚本模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26135587/

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