Unix is een besturingssysteem dat rond 1969 werd ontwikkeld bij AT & T Bell Labs door Ken Thompson en Dennis Ritchie. Er zijn veel interessante Unix-commando's die we kunnen gebruiken om verschillende taken uit te voeren. De vraag is, kunnen we dergelijke opdrachten rechtstreeks in een Python-programma gebruiken? Dit is wat ik je in deze tutorial laat zien.
Het Unix-commando ls
toont alle bestanden in de map. Als je zet ls
zoals in een Python-script, is dit wat je krijgt als je het programma uitvoert:
Traceback (meest recente oproep laatste): bestand 'test.py', regel 1, inls NameError: naam 'ls' is niet gedefinieerd
Dit laat zien dat de Python-interpreter behandelt ls
als een variabele en vereist dat deze wordt gedefinieerd (d.w.z. geïnitialiseerd), en deze niet als een Unix-opdracht behandelt.
Een oplossing voor dit probleem is om te gebruiken os.system ()
van Python's os
module.
Zoals vermeld in de documentatie, os.system ()
:
Voert het commando uit (een string) in een subshell. Dit wordt geïmplementeerd door het standaard C-functiesysteem () aan te roepen en heeft dezelfde beperkingen.
Dus we kunnen het ls
commando in Python als volgt:
import os os.system ('ls')
Hiermee wordt de lijst met bestanden in uw huidige map geretourneerd, wat uw locatie is .py
programma bevindt zich.
Laten we nog een voorbeeld nemen. Als u de huidige datum en tijd wilt retourneren, kunt u de opdracht Unix gebruiken datum
als volgt:
import os os.system ('datum')
In mijn geval was dit wat ik kreeg als resultaat van het bovenstaande script:
Di 24 mei 17:29:20 CEST 2016
Hoewel os.system ()
werkt, het wordt niet aanbevolen omdat het als een beetje oud en verouderd wordt beschouwd. Een meer aanbevolen oplossing is Python's deelproces
module noemen (args)
functie. Zoals vermeld in de documentatie over deze functie:
Voer de opdracht uit die wordt beschreven door args. Wacht totdat de opdracht is voltooid en retourneer vervolgens het kenmerk returncode.
Als we het willen uitvoeren ls
Unix-opdracht met behulp van deze methode, kunnen we het volgende doen:
van subproces import call ('ls')
Laten we eens kijken hoe we de datum kunnen retourneren met behulp van de deelproces
module, maar laten we het voorbeeld interessanter maken.
import subproces time = subproces. Open ('date', stdout = subproces.PIPE, stderr = subproces.PIPE) uitvoer, err = time.communicate () print 'It is', output
Het bovenstaande voorbeeld kan eenvoudiger worden uitgevoerd met check_output ()
, als volgt:
import subproces time = subprocess.check_output ('date') print 'Het is', tijd
De uitvoer van de bovenstaande scripts is:
Het is di 24 mei 19:14:22 CEST 2016
De bovenstaande voorbeelden tonen de flexibiliteit bij het gebruik van verschillende deelproces
functies en hoe we de resultaten kunnen doorgeven aan variabelen om verdere bewerkingen uit te voeren.
Zoals we in deze tutorial zagen, kunnen Unix-commando's worden aangeroepen en uitgevoerd met behulp van de deelproces
module, die veel flexibiliteit biedt bij het werken met Unix-commando's via de verschillende functies. U kunt meer informatie over deze module en de verschillende functies ervan vinden in de documentatie van Python.