subprocess.getoutput() și getstatusoutput() în Python

Procese (subprocess) Python 3.0+

Rulează o comandă în shell și returnează ieșirea (și codul), ca text.

Sintaxă
subprocess.getoutput(comanda)
subprocess.getstatusoutput(comanda)

Ce face subprocess.getoutput() și getstatusoutput()

getoutput("comanda") rulează comanda în shell și returnează ieșirea (inclusiv erorile) ca text, fără rândul nou de la final. getstatusoutput() returnează tuplul (cod, ieșire). Sunt comode pentru scripturi rapide, dar trec prin shell, deci nu le folosi cu date nesigure.

Parametri

Parametru Descriere
comanda Comanda shell, ca text.

Ce returnează

getoutput: text. getstatusoutput: tuplu (cod, text).

Exemple

Exemplul 1: Comenzi rapide

import subprocess
print(subprocess.getoutput("echo Salut | tr a-z A-Z"))
print(subprocess.getstatusoutput("exit 3"))
cod, text = subprocess.getstatusoutput("ls fisier_inexistent")
print(cod != 0, "No such file" in text)

Rezultat

SALUT
(3, '')
True True

Greșeli frecvente

  • Inserezi date de la utilizator în comandă: getoutput(f"grep {cautare} log.txt"). Folosește run(["grep", cautare, "log.txt"]).

Comenzi înrudite

  • subprocess.run(): Pornește un program extern, așteaptă să se termine și îi returnează rezultatul.
  • os.system() și os.popen(): Rulează o comandă în shell; variantele vechi, înlocuite de modulul subprocess.