Unix este un sistem de operare dezvoltat în jurul anului 1969 la AT & T Bell Labs de Ken Thompson și Dennis Ritchie. Există multe comenzi Unix interesante pe care le putem folosi pentru a îndeplini diferite sarcini. Întrebarea este, putem folosi astfel de comenzi direct într-un program Python? Asta vă voi arăta în acest tutorial.
Comanda Unix ls
listează toate fișierele din director. Dacă puneți ls
așa cum este într-un script Python, acesta este ceea ce veți obține atunci când executați programul:
Traceback (ultimul apel ultimul): Fișierul "test.py", linia 1, înls NameError: numele "ls" nu este definit
Aceasta arată că interpretorul Python se tratează ls
ca o variabilă și care necesită definirea acesteia (adică inițializată) și nu a tratat-o ca o comandă Unix.
O soluție la această problemă este de a folosi os.system ()
din Python os
modul.
După cum se menționează în documentație, os.system ()
:
Execută comanda (un șir) într-un subshell. Aceasta este implementată prin apelarea sistemului funcțional Standard C () și are aceleași limitări.
Deci, putem rula ls
comandă în Python după cum urmează:
import os os.system ('ls')
Aceasta va returna lista de fișiere din directorul dvs. curent, unde vă aflați .py
program este localizat.
Să luăm un alt exemplu. Dacă doriți să reveniți la data și ora curente, puteți folosi comanda Unix Data
după cum urmează:
import os os.system ("data")
În cazul meu, aceasta a fost ceea ce am obținut ca urmare a scriptului de mai sus:
Tue 24 Mai 17:29:20 CEST 2016
Cu toate ca os.system ()
funcționează, nu este recomandat deoarece este considerat un pic vechi și depreciat. O soluție mai recomandată este Python's subproces
modul apel (args)
funcţie. Așa cum am menționat în documentația despre această funcție:
Rulați comanda descrisă de args. Așteptați terminarea comenzii, apoi returnați atributul returncode.
Dacă vrem să conducem ls
Comanda Unix utilizând această metodă, putem face următoarele:
din apelul de import al subprocesului ('ls')
Să vedem cum putem returna data folosind subproces
modul, dar să facem exemplul mai interesant.
timpul de subproces de import = subproces.Popen ('data', stdout = subprocess.PIPE, stderr = subprocess.PIPE) ieșire, err = time.communicate () print 'It'
Exemplul de mai sus poate fi utilizat mai simplu check_output ()
, după cum urmează:
timpul de subprocesare a importului = subprocess.check_output ('date') print 'It' este timpul
Rezultatul scrierilor de mai sus este:
Este Dum Mai 24 19:14:22 CEST 2016
Exemplele de mai sus arată flexibilitatea utilizării diferitelor subproces
funcțiile și modul în care putem transmite rezultatele la variabile pentru a efectua alte operații.
Așa cum am văzut în acest tutorial, comenzile Unix pot fi numite și executate folosind subproces
modul, care oferă o mare flexibilitate atunci când lucrează cu comenzile Unix prin diferitele sale funcții. Puteți afla mai multe despre acest modul și despre diferitele sale funcții din documentația Python.