determine if os.system() is done

Martin Franklin mfranklin1 at
Thu Sep 8 10:12:21 CEST 2005

Xah Lee wrote:
> suppose i'm calling two system processes, one to unzip, and one to
> “tail” to get the las
t line. How can i determine when the first
> process is done?
> Example:
> subprocess.Popen([r"/sw/bin/gzip","-d","access_log.4.gz"]);
> last_line=subprocess.Popen([r"/usr/bin/tail","-n 1","access_log.4"],
> stdout=subprocess.PIPE).communicate()[0]
> of course, i can try workarounds something like os.system("gzip -d
> thiss.gz && tail thiss"), but i wish to know if there's non-hack way to
> determine when a system process is done.
>  Xah
>  xah at

I know you've found the answer to your question, however for the exact
example you gave a much better solution comes to mind...

import gzip

log_file ="access_log.4.gz")
last_line = log_file.readlines()[-1]


More information about the Python-list mailing list