Så här kör du Unix-kommandon i ditt pythonprogram

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, in  ls 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.

os.system ()

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

ring upp()

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.

Slutsats

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.