Bagaimana cara mengambil kode keluar saat menggunakan subprocess
modul dan communicate()
metode Python ?
Kode yang relevan:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Haruskah saya melakukan ini dengan cara lain?
python
subprocess
CarpeNoctem
sumber
sumber
from subprocess import Popen
dan kemudian gunakanPopen
sajasubprocess(or sp).Popen
yang saya katakan mungkin meningkatkan keterbacaan dan memperpendek barisprocess.communicate()
dan kemudian menetapkanreturncode
ke beberapa variabel. Jika tugas dilakukan sebelum memanggilcommunicate
, adalahNone
.Anda harus terlebih dahulu memastikan bahwa proses telah selesai berjalan dan kode kembali telah dibacakan menggunakan
.wait
metode ini. Ini akan mengembalikan kode. Jika Anda ingin mengaksesnya nanti, itu disimpan seperti.returncode
dalamPopen
objek.sumber
.communicate()
sudah menunggu subproses untuk mengakhiri..poll()
akan memperbarui kode kembali.Mencoba
Selain itu, setelah
.poll()
dipanggil kode kembali tersedia di objek sebagaichild.returncode
.sumber
exitcode = data.wait()
. Proses anak akan diblokir Jika itu menulis ke output standar / kesalahan, dan / atau membaca dari input standar, dan tidak ada rekan.sumber
Ini berhasil untuk saya. Ini juga mencetak output yang dikembalikan oleh proses anak
sumber