Slik kjører du Unix-kommandoer i Python-programmet

Unix er et operativsystem som ble utviklet rundt 1969 på AT & T Bell Labs av Ken Thompson og Dennis Ritchie. Det er mange interessante Unix-kommandoer som vi kan bruke til å utføre forskjellige oppgaver. Spørsmålet er, kan vi bruke slike kommandoer direkte i et Python-program? Dette er hva jeg vil vise deg i denne opplæringen.

Unix-kommandoen ls Viser alle filer i katalogen. Hvis du setter ls som i et Python-skript, er dette det du får når du kjører programmet:

Traceback (siste samtalen sist): Fil "test.py", linje 1, inn  ls NameError: navn 'ls' er ikke definert

Dette viser at Python tolken behandler ls som en variabel og krever at den blir definert (dvs. initialisert), og behandlet den ikke som en Unix-kommando.

os.system ()

En løsning på dette problemet er å bruke os.system () fra python os modul.

Som nevnt i dokumentasjonen, os.system ():

Utfører kommandoen (en streng) i en subshell. Dette implementeres ved å ringe til standard C-funksjonssystemet (), og har de samme begrensningene.

Så, vi kan kjøre ls kommandoen i python som følger:

import oss os.system ('ls')

Dette vil returnere listen over filer i din nåværende katalog, som er hvor din .py programmet er plassert.

La oss ta et annet eksempel. Hvis du vil returnere gjeldende dato og klokkeslett, kan du bruke Unix-kommandoen Dato som følger:

importer oss os.system ('date')

I mitt tilfelle var dette det jeg fikk som følge av det ovennevnte skriptet:

Tirsdag 24 mai 17:29:20 CEST 2016

anrop()

Selv om os.system () fungerer, det anbefales ikke som det regnes som litt gammelt og avskrevet. En mer anbefalt løsning er Python delprosess modul samtale (args) funksjon. Som nevnt i dokumentasjonen om denne funksjonen:

Kjør kommandoen beskrevet av args. Vent på at kommandoen skal fullføres, og returner deretter returkodeattributtet.

Hvis vi ønsker å kjøre ls Unix-kommando ved hjelp av denne metoden, kan vi gjøre følgende:

fra subprocess import call call ('ls')

La oss se hvordan vi kan returnere datoen ved hjelp av delprosess modul, men la oss gjøre eksemplet mer interessant.

importer underprosess tid = subprocess.Popen ('date', stdout = subprocess.PIPE, stderr = subprocess.PIPE) utdata, err = time.communicate () print 'Det er', utgang

Ovenstående eksempel kan kjøres enklere å bruke check_output (), som følger:

importer underprosess tid = subprocess.check_output ('date') skriv ut 'Det er', tid

Utgangen av de ovennevnte skriptene er:

Det er tirsdag 24 mai 19:14:22 CEST 2016

Ovennevnte eksempler viser fleksibiliteten ved å bruke forskjellige delprosess funksjoner, og hvordan vi kan passere resultatene til variabler for å utføre videre operasjoner.

Konklusjon

Som vi så i denne opplæringen, kan Unix-kommandoer bli kalt og utført ved hjelp av delprosess modul, som gir mye fleksibilitet når man arbeider med Unix-kommandoer gjennom sine forskjellige funksjoner. Du kan lære mer om denne modulen og dens forskjellige funksjoner fra Python-dokumentasjonen.