Esistono due modi per eseguire il reindirizzamento. Entrambi si applicano a uno subprocess.Popeno subprocess.call.
Imposta l'argomento della parola chiave shell = Trueo executable = /path/to/the/shelle specifica il comando così come lo hai lì.
Poiché stai semplicemente reindirizzando l'output su un file, imposta l'argomento della parola chiave
stdout = an_open_writeable_file_object
dove l'oggetto punta al outputfile.
subprocess.Popenè più generale di subprocess.call.
Popennon si blocca, consentendoti di interagire con il processo mentre è in esecuzione o di continuare con altre cose nel tuo programma Python. La chiamata a Popenrestituisce un Popenoggetto.
call fa blocco. Mentre supporta tutti gli stessi argomenti del Popencostruttore, quindi è ancora possibile impostare l'output del processo, le variabili ambientali, ecc., Lo script attende il completamento del programma e callrestituisce un codice che rappresenta lo stato di uscita del processo.
returncode = call(*args, **kwargs)
è fondamentalmente lo stesso di chiamare
returncode = Popen(*args, **kwargs).wait()
callè solo una funzione di convenienza. La sua implementazione in CPython è in subprocess.py :
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
Come puoi vedere, è un involucro sottile in giro Popen.
call()sembra essere molto chiara. Puoi fornire un preventivo o un link in modo da sapere su cosa concentrarci in una risposta?