python popen濡備綍瀹炵幇闈為樆濉炶鍙?
鍦≒ython涓紝鍙互浣跨敤subprocess.Popen瀵硅薄鏉ュ疄鐜伴潪闃诲璇诲彇瀛愯繘绋嬬殑杈撳嚭銆傞€氳繃璁剧疆stdout鍙傛暟涓?code>subprocess.PIPE锛屽彲浠ュ皢瀛愯繘绋嬬殑鏍囧噯杈撳嚭閲嶅畾鍚戝埌绠¢亾涓紝鐒跺悗浣跨敤select妯″潡鏉ユ鏌ョ閬撴槸鍚︽湁鏁版嵁鍙锛屼粠鑰屽疄鐜伴潪闃诲璇诲彇銆?/p>
浠ヤ笅鏄竴涓ず渚嬩唬鐮侊細
import subprocess
import select
# 鍚姩瀛愯繘绋嬪苟灏嗗叾鏍囧噯杈撳嚭閲嶅畾鍚戝埌绠¢亾
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
# 璇诲彇瀛愯繘绋嬭緭鍑?/span>
while True:
# 浣跨敤select妯″潡妫€鏌ョ閬撴槸鍚︽湁鏁版嵁鍙
rlist, _, _ = select.select([process.stdout], [], [], 0.1)
if process.stdout in rlist:
data = process.stdout.read(1024)
if not data:
break
print(data.decode('utf-8'))
# 绛夊緟瀛愯繘绋嬬粨鏉?/span>
process.wait()
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑鍚姩浜嗕竴涓?code>ls -l鐨勫瓙杩涚▼锛屽苟灏嗗叾鏍囧噯杈撳嚭閲嶅畾鍚戝埌绠¢亾涓€傜劧鍚庡湪涓€涓惊鐜腑浣跨敤select妯″潡鏉ユ鏌ョ閬撴槸鍚︽湁鏁版嵁鍙锛屽鏋滄湁鏁版嵁鍙锛屽垯璇诲彇骞舵墦鍗拌緭鍑恒€?/p>
闇€瑕佹敞鎰忕殑鏄紝鍦ㄨ鍙栧畬鎵€鏈夎緭鍑哄悗锛岄渶瑕佽皟鐢?code>process.wait()鏉ョ瓑寰呭瓙杩涚▼缁撴潫銆?/p>
相关问答