os.popen and lengthy operations

tokland at gmail.com tokland at gmail.com
Thu Sep 20 16:22:11 CEST 2007


On 20 sep, 08:31, "Dmitry Teslenko" <dtesle... at gmail.com> wrote:

> I'm using os.popen to perform lengthy operation such as building some
> project from source.

> def execute_and_save_output( command, out_file, err_file):
>         (i,o,e) = os.popen3( command )

You should consider using the higher-level "subprocess" module:

import subprocess

def run(command, output, error, bufsize=None):
    popen = subprocess.Popen(command.split(), bufsize=bufsize,
        stdout=output, stderr=error)
    popen.communicate()
    return popen.returncode

example:

create = lambda path: open(path, "w")
run("ls /etc/services abc", create("/tmp/output"), create("/tmp/
error"))

Check how to use the "bufsize" parameter in the docs:

http://docs.python.org/lib/node529.html

arnau




More information about the Python-list mailing list