我見過很多種方式來使用python管道,但他們太複雜,無法理解。我想寫的東西是這樣的:python迭代在Linux命令輸出,實時線逐行
import os
for cmdoutput_line in os.system('find /'):
print cmdoutput_line
什麼是最簡單的方式來實現它,而無需等待+大緩衝命令輸出?命令完成後,我不想等待,我只是想實時迭代輸出。
我見過很多種方式來使用python管道,但他們太複雜,無法理解。我想寫的東西是這樣的:python迭代在Linux命令輸出,實時線逐行
import os
for cmdoutput_line in os.system('find /'):
print cmdoutput_line
什麼是最簡單的方式來實現它,而無需等待+大緩衝命令輸出?命令完成後,我不想等待,我只是想實時迭代輸出。
from subprocess import Popen, PIPE
def os_system(command):
process = Popen(command, stdout=PIPE, shell=True)
while True:
line = process.stdout.readline()
if not line:
break
yield line
if __name__ == "__main__":
for path in os_system("find /tmp"):
print path
試試這個:
import subprocess
sp = subprocess.Popen('find /', shell=True, stdout=subprocess.PIPE)
results = sp.communicate()
print results
在而語句,您可以逐行讀取與子,
from subprocess import Popen, PIPE, STDOUT
process = Popen('find /', stdout = PIPE, stderr = STDOUT, shell = True)
while True:
line = process.stdout.readline()
if not line: break
print line
我敢肯定,你可以在'迭代process.stdout'就像任何其他類似文件的對象一樣。 – Blckknght
謝謝,這是最接近和最簡單的使用方法! – Fedcomp