0

对于学校,我必须制作一个模糊器,我使用 Charle Miller 来对 pdf 文件进行引信。我想检查应用程序的失败次数。当我做

result = process.communicate()
    print(result)

它多次打印 (None,None) 是什么意思?

4

1 回答 1

0

这意味着当您创建subprocess.Popen对象时,您没有指定stdout=PIPEor stderr=PIPE

弹出。communicate输入=无,超时=无

与进程交互:将数据发送到标准输入。从标准输出和标准错误读取数据 [...]

communicate()返回一个元组(stdout_data,stderr_data)。[...]

请注意,如果要将数据发送到进程的标准输入,则需要使用stdin=PIPE. 同样,要获取结果元组以外None的任何内容,您需要给出stdout=PIPE和/或stderr=PIPE[emph. 补充]太。

子流程 - 子流程管理 - Python 3 文档

例如:

import subprocess
apples_only = subprocess.Popen(
    ["grep", "apple"], 
    stdin=subprocess.PIPE, 
    stdout=subprocess.PIPE,
)
out, err = apples_only.communicate(b"pear\napple\nbanana\n")

print((out, err))
# (b'apple\n', None)  # did not say stderr=PIPE so it's None.
于 2020-01-09T17:18:16.173 回答