Heim > php教程 > PHP开发 > Hauptteil

4 Möglichkeiten, Linux-Systembefehle in Python auszuführen

高洛峰
Freigeben: 2016-11-23 13:21:49
Original
1675 Leute haben es durchsucht

(1) os.system

Führt Systembefehle nur in einem Unterterminal aus und kann die Rückgabeinformationen nach der Befehlsausführung nicht abrufen

system(command) -> exit_status
Führen Sie den Befehl (eine Zeichenfolge) in einer Subshell aus.

Bei Ausführung über die Befehlszeile wird das Ergebnis direkt gedruckt

>>>
04101419778.CHM Bash Document Media Py-Django Video
11.wmv Bücher Downloads Bilder Python
all-20061022 Desktop-Beispiele Projekttools

(2) os.popen

Die Methode führt nicht nur den Befehl aus, sondern gibt auch das ausgeführte Informationsobjekt zurück

popen(command [, mode='r' [, bufsize]]) -> von einem Befehl, der ein Dateiobjekt zurückgibt.

>>>tmp = os.popen('ls *.py').readlines()

>>>tmp
Out[21]:
['dump_db_pickle.py ',
'dump_db_pickle_recs.py ',
'dump_db_shelve.py ',
'initdata.py ',
'__init__.py ' ,
' make_db_pickle.py ',
'make_db_pickle_recs.py ',
'make_db_shelve.py ',
'peopleinteract_query.py ',
'reader.py ',
' testargv.py ',
'teststreams.py ',
'update_db_pickle.py ',
'writer.py ']

Der Vorteil ist: Weisen Sie das zurückgegebene Ergebnis einer Variablen zu erleichtern die Programmabwicklung.

(3) Modulunterprozess verwenden

>>> Unterprozess importieren
>>> , "arg2"],shell=True)

Erhalten Sie die Rückgabe und Ausgabe:

import subprocess

p = subprocess.Popen('ls', shell=True, stdout=subprocess . PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print line,
retval = p.wait()

(4) Using module Befehle

>>> Importbefehle

>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__ ' , 'getoutput', 'getstatus','getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput("date")
'Mi 10. Juni 19:39: 57 CST 2009'
>>>
>>> commands.getstatusoutput("date")
(0, 'Wed Jun 10 19:40:41 CST 2009')

Hinweis: Wenn die Parameter oder Rückgaben des Ausführungsbefehls chinesische Zeichen enthalten, wird die Verwendung von Unterprozessen empfohlen. Wenn Sie os.popen verwenden, tritt der folgende Fehler auf:

Traceback (aktuellste zuletzt aufrufen):

Datei „./test1.py“, Zeile 56, inmain()
Datei „./test1.py“, Zeile 45, in main
fax.sendFax()
Datei „./ mailfax/Fax.py“, Zeile 13, in sendFax
os.popen(cmd)
UnicodeEncodeError: „ascii“-Codec kann Zeichen in Position 46-52 nicht kodieren: Ordinalzahl nicht im Bereich (128 )


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage