gpt4 book ai didi

Python subprocess.Popen 不适用于 stdout

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

我需要实现一个外部应用程序来计算 Modbus 通信的 CRC 值。可执行文件需要一个输入字符串并返回如下输出:

CRC16 = 0x67ED / 26605
CRC16 (Modbus) = 0x7CED / 31981

我调用该程序,然后手动输入输入。

p = Popen(["some_file.exe", "-x"], stdin=PIPE)
p.communicate("some_string")

到目前为止,一切正常。

但是,我想将输出保存到变量或其他东西(没有额外的文件)以供进一步使用。

我知道有 stdout 和 stderr 参数,但是在输入时

p = Popen([file, "-x"], stdin=PIPE, stdout=PIPE, stderr=PIPE)

什么也没发生。

有人知道该怎么做吗?

提前致谢。

PS:在 Windows 7 上使用 Python 2.7。

最佳答案

要获取 ls 的输出,请使用 stdout=subprocess.PIPE。

proc = subprocess.Popen('ls', stdout=subprocess.PIPE)
output = proc.stdout.read()
print output

获取自:Pipe subprocess standard output to a variable

注意:

如果您使用 stdin 作为 PIPE,则必须分配一个值,如下例所示:

grep = Popen('grep ntp'.split(), stdin=PIPE, stdout=PIPE)
ls = Popen('ls /etc'.split(), stdout=grep.stdin)
output = grep.communicate()[0]

如果控制台使用 PIPE 给出值,则必须分配标准输入值读数 系统标准输入

关于Python subprocess.Popen 不适用于 stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526898/

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