Cum se execută comenzi Unix în programul dvs. Python

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, în  ls 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.

os.system ()

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

apel()

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.

Concluzie

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.

Cod