Heim > Artikel > Backend-Entwicklung > So verwenden Sie das Subprozessmodul für die Subprozessverwaltung in Python 2.x
So verwenden Sie das Subprozessmodul für die Subprozessverwaltung in Python 2.x
Übersicht:
In der Python-Entwicklung müssen wir manchmal andere externe Befehle oder Programme im Programm aufrufen. Das Unterprozessmodul ist eine von Python bereitgestellte Standardbibliothek, mit der Unterprozesse problemlos erstellt und mit ihnen kommuniziert werden können. In diesem Artikel wird die Verwendung des Subprozessmoduls für die Subprozessverwaltung vorgestellt und anhand von Codebeispielen veranschaulicht.
subprocess.Popen()
, die einen neuen Prozess starten und ein Popen-Objekt zurückgeben kann. Die grundlegende Syntax für die Verwendung der Funktion Popen()
zum Erstellen eines Unterprozesses lautet wie folgt: 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 : Eingabe- und Ausgabeparameter der Puffergröße steuern, 0 bedeutet keine Pufferung, 1 bedeutet Zeilenpufferung, andere positive Zahlen stellen die Puffergröße dar
ausführbar: Der Pfad zur ausführbaren Datei, der Suchpfad in der Systemumgebungsvariablen PATH wird verwendet Standardmäßig
🎜stdin: Der Standard-Eingabestream des untergeordneten Prozesses, der Standardwert ist PIPE, der über das stdin-Attribut des Popen-Objekts eingegeben wird. 🎜🎜stdout: Der Standardausgabestream des untergeordneten Prozesses, der standardmäßig PIPE ist. die über das stdout-Attribut des Popen-Objekts ausgegeben wird 🎜🎜stderr: Der Standardfehlerstrom des untergeordneten Prozesses, der Standardwert ist PIPE, der über das stderr-Attribut des Popen-Objekts ausgegeben wird 🎜🎜preexec_fn: ein ausführbares Objekt, das wird aufgerufen, bevor der untergeordnete Prozess startet 🎜🎜close_fds: ob nicht mehr benötigte Dateideskriptoren geschlossen werden sollen, der Standardwert ist False🎜🎜 Shell: Ob die Befehlsanalyse über die Shell durchgeführt werden soll, der Standardwert ist False 🎜🎜cwd: Die Funktion Verzeichnis, der Standardwert ist None 🎜🎜env: Die Umgebungsvariable, der Standardwert ist None, dh die Umgebungsvariable des übergeordneten Prozesses wird verwendet 🎜🎜universal_newlines: Steuert, ob die Eingabe und Ausgabe in den Textmodus konvertiert werden, der Standardwert ist False🎜🎜startupinfo: Die Startinformationen des untergeordneten Prozesses, der Standardwert ist None🎜🎜creationflags: Das Erstellungsflag des untergeordneten Prozesses, der Standardwert ist 0🎜Popen() angeben
Funktion Eingabe und Ausgabe. Wenn diese Parameter nicht angegeben werden, wird standardmäßig eine neue Pipe erstellt und über die Eigenschaften des Popen-Objekts gelesen und geschrieben. 🎜🎜🎜Beispielcode 2: Starten Sie einen untergeordneten Prozess und führen Sie Ein- und Ausgaben über Pipes durch. 🎜rrreee🎜Beispielcode 3: Starten Sie einen Unterprozess und leiten Sie die Ausgabe in eine Datei um. 🎜rrreeePopen()
einen Popen zurück Objekt sofort statt Warten, bis der untergeordnete Prozess die Ausführung abgeschlossen hat. Wenn wir warten müssen, bis der untergeordnete Prozess die Ausführung abgeschlossen hat, bevor wir mit dem nächsten Schritt fortfahren, können wir die Methode wait()
des Objekts Popen()
verwenden. 🎜🎜🎜Beispielcode 4: Starten Sie einen untergeordneten Prozess und warten Sie, bis seine Ausführung abgeschlossen ist. 🎜rrreeereturncode
des Objekts Popen()
verwenden, um den Exit-Statuscode des untergeordneten Prozesses abzurufen. Wenn es 0 ist, bedeutet dies, dass die Ausführung erfolgreich ist. 🎜🎜🎜Beispielcode 5: Rufen Sie den Exit-Statuscode des untergeordneten Prozesses ab. 🎜rrreee🎜Zusammenfassung: 🎜Mit dem Unterprozessmodul können wir ganz einfach Unterprozesse erstellen und Prozesse in Python-Programmen verwalten. Zu den spezifischen Betriebsmethoden gehören das Erstellen eines untergeordneten Prozesses, das Steuern der Eingabe und Ausgabe des untergeordneten Prozesses, das Warten auf das Ende des untergeordneten Prozesses und das Erfassen des Exit-Statuscodes des untergeordneten Prozesses. Wenn Sie dieses Wissen beherrschen, können Sie Python besser für die Unterprozessverwaltung nutzen und die Flexibilität und Skalierbarkeit des Programms verbessern. 🎜🎜Das Obige ist der relevante Inhalt zur Verwendung des Subprozessmoduls für die Subprozessverwaltung in Python 2.x. Ich hoffe, das hilft. 🎜Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Subprozessmodul für die Subprozessverwaltung in Python 2.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!