printing stdout in realtime from subprocess

后端 未结 2 318
一整个雨季
一整个雨季 2021-01-22 07:48

I want to print rather than catch the output from a bash command (more closer to real-time than this post). For instance, I have a script like this:

from subproc         


        
相关标签:
2条回答
  • 2021-01-22 08:25

    Try doing this way:

    from subprocess import Popen, PIPE, STDOUT
    cmd = 'rsync --rsh=ssh -rv thisdir/ servername:folder/'
    p = Popen(cmd.split(), stdout=PIPE, stderr=STDOUT)
    for line in p.stdout:
        print line
    

    Note, that p.stdout has hardcoded buffer (8192 bytes), if you want to start reading file at once, try this:

    for line in iter(p.stdout.readline,''):
        print line
    
    0 讨论(0)
  • 2021-01-22 08:43
    import subprocess
    cmd = 'rsync --rsh=ssh -rv thisdir/ servername:folder/'
    subprocess.call(cmd, shell=True)
    

    (The shell=True paramater interprets the string by passing it to sh, allowing sh to split the string into tokens.)

    0 讨论(0)
提交回复
热议问题