Erfasst die Standardausgabe des Befehls, der zeilenweise asynchron vom Unterprozess ausgeführt wird.
Popen.stdout.readline () abfragenield zurückPopen.poll () erkennt den Abschluss des Prozessesimport sys
import subprocess
def get_lines(cmd):
    '''
    :param cmd:str auszuführender Befehl.
    :rtype: generator
    :return:().
    '''
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    
    while True:
        line = proc.stdout.readline()
        if line:
            yield line
        
        if not line and proc.poll() is not None:
            break
if __name__ == '__main__':
    for line in get_lines(cmd='du ~/'):
        sys.stdout.write(line)
Recommended Posts