User Tools

Site Tools


doc:appunti:prog:python_program_execution

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:prog:python_program_execution [2009/10/01 15:37] niccolodoc:appunti:prog:python_program_execution [2017/07/16 06:44] – [Run two commands in a pipe] niccolo
Line 14: Line 14:
  
 <code python> <code python>
-retcode = subprocess.call(["ls", "-l"])+retcode = subprocess.call(["mycmd", "myarg"]
 +</code> 
 + 
 +Same as above, but run in a subshell (in this case the command may contain shell redirections): 
 + 
 +<code python> 
 +retcode = subprocess.call("mycmd myarg", shell=True)
 </code> </code>
  
Line 25: Line 31:
 </code> </code>
  
-Get also the return code and iterate on the output:+Get also the return code, stderr and iterate on the output:
  
 <code python> <code python>
-subproc = subprocess.Popen(["mycmd", "myarg"], stdin=None, stdout=subprocess.PIPE) +subproc = subprocess.Popen(["mycmd", "myarg"], stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
-output  = subproc.communicate()[0]+output, stderr = subproc.communicate()
 retcode = subproc.returncode retcode = subproc.returncode
 for line in output.splitlines(): for line in output.splitlines():
     print line     print line
 +</code>
 +
 +===== Redirect output to a file =====
 +
 +<code python>
 +file = open("/tmp/cmd_output", "w")
 +subprocess.call(["mycmd", "myarg"], stdout=file)
 +file.close()
 +</code>
 +
 +===== Run two commands in a pipe =====
 +
 +<code python>
 +cmd1 = ["oggdec", "-Q", "-o", "-", src]
 +cmd2 = ["lame", "--preset", "cd", "-", dst]
 +p1 = subprocess.Popen(cmd1, stdout=subprocess.PIPE)
 +p2 = subprocess.Popen(cmd2, stdin=p1.stdout, stdout=subprocess.PIPE)
 +p1.stdout.close()
 +output = p2.communicate()[0]
 +</code>
 +
 +===== Write to command standard input =====
 +
 +<code python>
 +cmd_input = []
 +cmd_input.append('line input one')
 +cmd_input.append('line input two')
 +
 +p = subprocess.Popen('command', stdin=subprocess.PIPE)
 +p.communicate(os.linesep.join(cmd_input))
 </code> </code>
  
doc/appunti/prog/python_program_execution.txt · Last modified: 2022/07/01 10:56 by niccolo