Ce face subprocess.check_output(), check_call() și call()
check_output() rulează programul și returnează ieșirea lui; dacă programul eșuează, aruncă CalledProcessError. check_call() rulează și aruncă eroare la cod nenul, fără să captureze ieșirea. call() rulează și returnează doar codul de ieșire.
Sunt echivalente cu run(..., capture_output/check=...); documentația recomandă run() pentru cod nou, dar aceste funcții apar des în cod existent.
Parametri
| Parametru | Descriere |
|---|---|
argumente |
Programul și argumentele, plus opțiunile lui Popen. |
Ce returnează
check_output: ieșirea. check_call: 0. call: codul de ieșire.
Exemple
Exemplul 1: Cele trei variante
import subprocess, sys
print(subprocess.check_output(["echo", "versiunea 1.2"], text=True).strip())
print(subprocess.call(["sh", "-c", "exit 4"]))
print(subprocess.check_call(["true"]))
try:
subprocess.check_output([sys.executable, "-c", "import sys; sys.exit(2)"])
except subprocess.CalledProcessError as e:
print("Eroare, cod", e.returncode)
Rezultat
versiunea 1.2
4
0
Eroare, cod 2
Greșeli frecvente
- Folosești
check_outputfărătext=Trueși compari rezultatul cu un text; primeștibytes, deci comparația este falsă.
Comenzi înrudite
subprocess.run(): Pornește un program extern, așteaptă să se termine și îi returnează rezultatul.subprocess.getoutput() și getstatusoutput(): Rulează o comandă în shell și returnează ieșirea (și codul), ca text.