Unix är ett operativsystem som utvecklades runt 1969 vid AT & T Bell Labs av Ken Thompson och Dennis Ritchie. Det finns många intressanta Unix-kommandon som vi kan använda för att utföra olika uppgifter. Frågan är, kan vi använda sådana kommandon direkt i ett Python-program? Det här är vad jag ska visa dig i denna handledning.
Unix-kommandot ls
listar alla filer i katalogen. Om du sätter ls
som det är i ett Python-skript, så är detta vad du får när du kör programmet:
Traceback (senaste samtal senast): Fil "test.py", rad 1, inls NameError: namn 'ls' är inte definierat
Detta visar att Python tolken behandlar ls
som en variabel och kräver att den definieras (dvs initialiserad) och behandlade den inte som ett Unix-kommando.
En lösning på problemet är att använda os.system ()
från python os
modul.
Som nämnts i dokumentationen, os.system ()
:
Exekverar kommandot (en sträng) i en subshell. Detta genomförs genom att ringa standard C-funktionssystemet (), och har samma begränsningar.
Så, vi kan springa ls
kommandot i Python enligt följande:
importera oss os.system ('ls')
Detta kommer att returnera listan över filer i din nuvarande katalog, vilket är var din .py
programmet är beläget.
Låt oss ta ett annat exempel. Om du vill återställa nuvarande datum och tid kan du använda Unix-kommandot datum
som följer:
importera oss os.system ('datum')
I mitt fall var detta vad jag fick som ett resultat av ovanstående skript:
Tis 24 maj 17:29:20 CEST 2016
Fastän os.system ()
fungerar, det rekommenderas inte eftersom det anses vara lite gammalt och avlägsnat. En mer rekommenderad lösning är Python delprocessen
modul call (args)
fungera. Som nämnts i dokumentationen om denna funktion:
Kör kommandot som beskrivs av args. Vänta på att kommandot ska slutföra och returnera sedan returkodsattributet.
Om vi vill springa ls
Unix-kommandot med den här metoden kan vi göra följande:
från subprocess import call call ('ls')
Låt oss se hur vi kan återställa datumet med hjälp av delprocessen
modul, men låt oss göra exemplet mer intressant.
importera delprocess tid = subprocess.Popen ('date', stdout = subprocess.PIPE, stderr = subprocess.PIPE) utgång, err = time.communicate () print 'Det är', utgång
Ovanstående exempel kan köras enklare med hjälp av check_output ()
, som följer:
importera delprocess tid = subprocess.check_output ('date') skriv ut 'Det är', tid
Utmatningen av ovanstående skript är:
Det är tis den 24 maj 19:14:22 CEST 2016
Ovanstående exempel visar flexibiliteten vid användning av olika delprocessen
funktioner och hur vi kan överföra resultaten till variabler för att kunna utföra ytterligare operationer.
Som vi såg i den här handledningen kan Unix-kommandon ringas och exekveras med hjälp av delprocessen
modulen, som ger stor flexibilitet när man arbetar med Unix-kommandon genom sina olika funktioner. Du kan lära dig mer om den här modulen och dess olika funktioner från Python-dokumentationen.