用法:
Popen.communicate(input=None, timeout=None)
与进程交互:将数据发送到标准输入。从 stdout 和 stderr 读取数据,直到到达文件结尾。等待进程终止并设置
returncode
属性。可选的input
参数应该是要发送到子进程的数据,或者None
,如果不应该向子进程发送数据。如果流以文本模式打开,input
必须是字符串。否则,它必须是字节。communicate()
返回一个元组(stdout_data, stderr_data)
。如果流以文本模式打开,则数据将是字符串;否则,字节。请注意,如果要将数据发送到进程的标准输入,则需要使用
stdin=PIPE
创建 Popen 对象。同样,要在结果元组中获得除None
以外的任何内容,您还需要提供stdout=PIPE
和/或stderr=PIPE
。如果进程在
timeout
秒后没有终止,则会引发TimeoutExpired
异常。捕获此异常并重试通信不会丢失任何输出。如果超时到期,子进程不会被杀死,因此为了正确清理well-behaved应用程序应该杀死子进程并完成通信:
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
注意
读取的数据是缓存在内存中的,所以如果数据量很大或者没有限制,不要使用这种方法。
在 3.3 版中更改:
timeout
加入。
相关用法
- Python subprocess.Popen用法及代码示例
- Python subprocess.run用法及代码示例
- Python subprocess.check_output用法及代码示例
- Python subprocess.getstatusoutput用法及代码示例
- Python super()用法及代码示例
- Python sum()用法及代码示例
- Python super用法及代码示例
- Python sklearn.cluster.MiniBatchKMeans用法及代码示例
- Python scipy.ndimage.binary_opening用法及代码示例
- Python scipy.signal.windows.tukey用法及代码示例
- Python scipy.stats.mood用法及代码示例
- Python str.isidentifier用法及代码示例
- Python sklearn.metrics.fbeta_score用法及代码示例
- Python scipy.fft.ihfftn用法及代码示例
- Python scipy.stats.normaltest用法及代码示例
- Python scipy.ndimage.convolve1d用法及代码示例
- Python scipy.stats.arcsine用法及代码示例
- Python scipy.interpolate.UnivariateSpline.antiderivative用法及代码示例
- Python scipy.linalg.hadamard用法及代码示例
- Python socket.create_server用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 subprocess.Popen.communicate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。