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, innls 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.
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
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.
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.