Ada dua cara untuk melakukan pengalihan. Keduanya berlaku untuk subprocess.Popenatau subprocess.call.
Tetapkan argumen kata kunci shell = Trueatau executable = /path/to/the/shelldan 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 outputfile.
subprocess.Popenlebih umum daripada subprocess.call.
Popentidak memblokir, memungkinkan Anda untuk berinteraksi dengan proses saat sedang berjalan, atau melanjutkan dengan hal lain di program Python Anda. Panggilan untuk Popenmengembalikan Popenobjek.
call tidak menghalangi. Meskipun mendukung semua argumen yang sama dengan Popenkonstruktor, sehingga Anda masih dapat mengatur output proses, variabel lingkungan, dll., Skrip Anda menunggu program selesai, dan callmengembalikan kode yang mewakili status keluar proses.
returncode = call(*args, **kwargs)
pada dasarnya sama dengan menelepon
returncode = Popen(*args, **kwargs).wait()
callhanyalah 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?