Ada dua cara untuk melakukan pengalihan. Keduanya berlaku untuk subprocess.Popen
atau subprocess.call
.
Tetapkan argumen kata kunci shell = True
atau executable = /path/to/the/shell
dan tentukan perintah seperti yang Anda miliki di sana.
Karena Anda hanya mengarahkan output ke file, atur argumen kata kunci
stdout = an_open_writeable_file_object
di mana objek menunjuk ke output
file.
subprocess.Popen
lebih umum daripada subprocess.call
.
Popen
tidak memblokir, memungkinkan Anda untuk berinteraksi dengan proses saat sedang berjalan, atau melanjutkan dengan hal lain di program Python Anda. Panggilan untuk Popen
mengembalikan Popen
objek.
call
tidak menghalangi. Meskipun mendukung semua argumen yang sama dengan Popen
konstruktor, sehingga Anda masih dapat mengatur output proses, variabel lingkungan, dll., Skrip Anda menunggu program selesai, dan call
mengembalikan kode yang mewakili status keluar proses.
returncode = call(*args, **kwargs)
pada dasarnya sama dengan menelepon
returncode = Popen(*args, **kwargs).wait()
call
hanyalah fungsi kenyamanan. Implementasinya di CPython ada di 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
Seperti yang Anda lihat, ini adalah pembungkus tipis Popen
.
call()
tampaknya sangat jelas. Bisakah Anda memberikan penawaran atau tautan sehingga kami tahu apa yang harus difokuskan dalam jawaban?