Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x
Ikhtisar:
Dalam pembangunan Python, kadangkala kita perlu memanggil arahan atau atur cara luaran lain dalam program. Modul subproses ialah perpustakaan standard yang disediakan oleh Python, yang boleh membuat dan berkomunikasi dengan mudah dengan subproses. Artikel ini akan memperkenalkan cara menggunakan modul subproses untuk pengurusan subproses dan menggambarkannya dengan contoh kod.
subprocess.Popen()
, yang boleh memulakan proses baharu dan mengembalikan objek Popen. Sintaks asas untuk menggunakan fungsi Popen()
untuk mencipta subproses adalah seperti berikut: subprocess.Popen()
,它能够启动一个新进程并返回一个Popen对象。使用Popen()
函数创建子进程的基本语法如下:import subprocess subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
参数说明:
示例代码1:启动一个子进程并执行命令,然后获取子进程的输出结果。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) output, _ = p.communicate() print(output)
Popen()
函数的stdin、stdout、stderr参数来指定子进程的输入输出。如果不指定这些参数,默认会创建一个新的管道并通过Popen对象的属性来读写。示例代码2:启动一个子进程并通过管道进行输入、输出。
import subprocess cmd = "grep -E 'a|b|c'" p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) input_data = "abcdefg hijklmnop qrstuvwxyz " output, _ = p.communicate(input_data) print(output)
示例代码3:启动一个子进程并重定向输出到文件中。
import subprocess cmd = "grep -E 'a|b|c' input.txt > output.txt" subprocess.Popen(cmd, shell=True)
Popen()
函数会立即返回一个Popen对象,而不会等待子进程执行完毕。如果我们需要等待子进程执行完毕后再进行下一步操作,可以使用Popen()
对象的wait()
方法。示例代码4:启动一个子进程并等待其执行完毕。
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() print("子进程执行完毕")
Popen()
对象的returncode
import subprocess cmd = "ls -l" p = subprocess.Popen(cmd, shell=True) p.wait() if p.returncode == 0: print("子进程执行成功") else: print("子进程执行失败")
bufsize : Kawal input dan output Parameter saiz penimbal, 0 bermakna tiada penimbalan, 1 bermakna penimbalan baris, nombor positif lain mewakili saiz penimbal
boleh laku: laluan ke fail boleh laku, laluan carian dalam pembolehubah persekitaran PATH sistem digunakan secara lalai
🎜stdin: standard strim input proses anak, lalai ialah PIPE, yang dimasukkan melalui atribut stdin objek Popen 🎜🎜stdout: Strim output standard proses anak, yang lalai kepada PIPE. yang merupakan output melalui atribut stdout objek Popen 🎜🎜stderr: Strim ralat standard proses anak , lalai ialah PIPE, iaitu output melalui atribut stderr objek Popen 🎜🎜preexec_fn: objek boleh laku yang. akan dipanggil sebelum proses anak bermula 🎜🎜close_fds: sama ada hendak menutup deskriptor fail yang tidak lagi diperlukan, lalainya ialah False🎜🎜 shell: Sama ada hendak melakukan parsing perintah melalui shell, lalainya ialah False 🎜🎜cwd: The working direktori, lalai ialah Tiada 🎜🎜env: Pembolehubah persekitaran, lalai ialah Tiada, iaitu pembolehubah persekitaran proses induk digunakan 🎜🎜universal_newlines: Mengawal sama ada input dan output ditukar kepada mod Teks, lalai ialah False🎜🎜startupinfo: Maklumat permulaan proses anak, lalainya ialah None🎜🎜creationflags: Bendera penciptaan proses anak, lalai ialah 0🎜Popen()
fungsi Input dan output. Jika parameter ini tidak dinyatakan, paip baharu akan dibuat secara lalai dan dibaca serta ditulis melalui sifat objek Popen. 🎜🎜🎜Contoh kod 2: Mulakan proses kanak-kanak dan lakukan input dan output melalui paip. 🎜rrreee🎜Contoh kod 3: Mulakan subproses dan ubah hala output ke fail. 🎜rrreeePopen()
akan mengembalikan Popen objek serta-merta dan bukannya Tunggu proses anak untuk menyelesaikan pelaksanaan. Jika kita perlu menunggu proses anak menyelesaikan pelaksanaan sebelum meneruskan ke langkah seterusnya, kita boleh menggunakan kaedah wait()
objek Popen()
. 🎜🎜🎜Contoh kod 4: Mulakan proses anak dan tunggu pelaksanaannya selesai. 🎜rrreeereturncode
objek Popen()
untuk mendapatkan kod status keluar bagi proses anak Jika 0, ini bermakna pelaksanaan berjaya. 🎜🎜🎜Contoh kod 5: Dapatkan kod status keluar proses anak. 🎜rrreee🎜Ringkasan: 🎜Melalui modul subproses, kami boleh mencipta subproses dan mengurus proses dalam program Python dengan mudah. Kaedah operasi khusus termasuk mencipta proses kanak-kanak, mengawal input dan output proses kanak-kanak, menunggu proses kanak-kanak tamat, dan menangkap kod status keluar proses kanak-kanak. Menguasai pengetahuan ini boleh menggunakan Python dengan lebih baik untuk pengurusan sub-proses dan meningkatkan fleksibiliti dan skalabiliti program. 🎜🎜Di atas ialah kandungan yang berkaitan tentang menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x. Harap ini membantu. 🎜Atas ialah kandungan terperinci Cara menggunakan modul subproses untuk pengurusan subproses dalam Python 2.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!