用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。