Python 3 wurde seit einiger Zeit aktualisiert. Python 3 wird auch häufig unter Linux verwendet.
Wenn Sie zunächst nur ausführen oder nur den Ausführungsstatus abrufen müssen, können Sie os.system verwenden, um
#!/usr/bin/env python3 print ('hello,world') import os val2 = os.system('cd trb && cd trb') val3 = os.system('ls') print('val2 is ',val2)
den obigen Code aufzurufen. Wenn der Code in val2 erfolgreich ausgeführt wird, das heißt, es gibt zwei Ebenen von trb-Ordnern, ist der Wert von val2 0, andernfalls 256
Der zweizeilige Aufruf hat keine Vererbung Kontinuierlich ausführen, && in einer Anweisung hinzufügen (Shell-Syntax)
Vor dem Drucken wird auf dem Bildschirm auch das Ausführungsergebnis angezeigt
hello,worldsh: line 0: cd: trb: 没有那个文件或目录 Abcd.py automesh.sh Cal_Ori fold.txt Linux_py_temp.py meshedjob.rec new_geom onc143314 trb val2 is 256
os.popen(cmd)-Methode, Sie können nur die Ausgabe erhalten des Vorgangs, aber wenn Sie nicht drucken, wird nichts auf dem Bildschirm angezeigt.
Zum Beispiel wird
val4 = os.popen('cd trb && cd trb') val5 = os.popen('ls')print('开始PRINT')print(val4.read())print(val5.read())
wie folgt angezeigt:
hello,world 开始PRINT/bin/sh: line 0: cd: trb: 没有那个文件或目录 Abcd.py automesh.shCal_Ori fold.txt Linux_py_temp.py meshedjob.rec new_geom onc143314 trb
Die Ausgabe hier ist ein dateiähnliches Objekt, das auch durch Aufrufe von read oder readlines durchlaufen werden kann.
###########
Die ultimative Waffe, Unterprozess
Der nach py3.5 empfohlene Modul-Unterprozess
Online The Befehle im Tutorial sind Funktionen in 2 und wurden in 3 gelöscht, aber sie können über den Unterprozess aufgerufen werden.
hat die folgenden Befehle:
subprocess.
getstatusoutput
( cmd )
kehrt zurück, um cmd in der Shell auszuführen. <code class="docutils literal"><span class="pre">(status, <span class="pre">output) 返回2个元素的元组</span></span>
(status,
3.4 Dann Win-Unterstützung hinzufügen
subprocess.
getoutput
(cmd )
legacycmd = subprocess.getstatusoutput('ls -l')print('subprocess.getstatusoutput 输出',legacycmd) legacycmd2 = subprocess.getoutput('ls -l')print('subprocess.getoutput 输出',legacycmd2)
subprocess.getstatusoutput 输出 (0, '总用量 48\n-rwxr--r-- 1 para036 bjpara 516 4月 16 2018 Abcd.py\n-rwxr--r-- 1 para036 bjpara 1619 4月 16 16:58 automesh_onpsn_fortest.sh\n-rwxr--r-- 1 para036 bjpara 1616 4月 15 14:31 automesh.sh\ndrwxr-xr-x 5 para036 bjpara 4096 4月 15 14:31 Cal_Ori\n-rw-r --r-- 1 para036 bjpara 32 4月 16 16:56 fold.txt\n-rwxr--r-- 1 para036 bjpara 1530 4月 15 14:45 Linux_py_temp.py\n-rw-r--r-- 1 para036 bjpara 27 4月 15 14:43 meshedjob.rec\ndrwxr-xr-x 2 para036 bjpara 4096 4月 15 14:31 new_geom\ndrwxr-xr-x 5 para036 bjpara 4096 4月 15 14:51 onc143314\ndrwx r-xr-x 5 para036 bjpara 4096 4月 16 17:05 onc16165650\ndrwxr-xr-x 5 para036 bjpara 4096 4月 16 16:46 onc163840\ndrwxr-xr-x 2 para036 bjpara 4096 4 月 15 14:32 trb') subprocess.getoutput 输出 总用量 48 -rwxr--r-- 1 para036 bjpara 516 4月 16 2018 Abcd.py -rwxr--r-- 1 para036 bjpara 1619 4月 16 16:58 automesh_onpsn_fortest.sh -rwxr--r-- 1 para036 bjpara 1616 4月 15 14:31 automesh.sh drwxr-xr-x 5 para036 bjpara 4096 4月 15 14:31 Cal_Ori -rw-r--r-- 1 para036 bjpara 32 4月 16 16:56 fold.txt -rwxr--r-- 1 para036 bjpara 1530 4月 15 14:45 Linux_py_temp.py -rw-r--r-- 1 para036 bjpara 27 4月 15 14:43 meshedjob.rec drwxr-xr-x 2 para036 bjpara 4096 4月 15 14:31 new_geom drwxr-xr-x 5 para036 bjpara 4096 4月 15 14:51 onc143314 drwxr-xr-x 5 para036 bjpara 4096 4月 16 17:05 onc16165650 drwxr-xr-x 5 para036 bjpara 4096 4月 16 16:46 onc163840 drwxr-xr-x 2 para036 bjpara 4096 4月 15 14:32 trb
recomd = subprocess.run(['ls','-l'])#等待命令执行完成后会在屏幕输出执行结果,然后返回一个包含执行结果的CompletedProcess类的实例。print('输出recmd\n',recomd)print(recomd.returncode)
Wenn Sie eine Ausgabe zurückgeben möchten, fügen Sie Parameter hinzu, übergeben Sie subprocess.PIPE an stdout und stderr und übergeben Sie dann die Attribute stdout und stderr der zurückgegebenen CompletedProcess-Klasseninstanz oder erfassen Sie den entsprechenden Inhalt
universal_newlines: Dieser Parameter beeinflusst das Eingabe- und Ausgabedatenformat. Zu diesem Zeitpunkt ist die Ausgabe von stdout und stderr beispielsweise eine Bytefolge ; wenn der Wert dieses Parameters auf „True“ gesetzt ist, ist die Ausgabe von stdout und stderr eine Zeichenfolge.Der Gesamtcode lautet wie folgt:
#!/usr/bin/env python3 print ('hello,world') import os # val2 = os.system('cd trb && cd trb') # val3 = os.system('ls') # print('val2 is ',val2) # val4 = os.popen('cd trb && cd trb') # val5 = os.popen('ls') # print('开始PRINT') # print(val4.read()) # print(val5.read()) import subprocess recomd = subprocess.run(['ls','-l']) #等待命令执行完成后会在屏幕输出执行结果,然后返回一个包含执行结果的CompletedProcess类的实例。 print('输出recmd\n',recomd) print(recomd.returncode) print('传递参数') recomdouterr = subprocess.run( ['ls','-l'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True) print('输出outerr',recomdouterr.stdout,recomdouterr.stderr) print('传递参数2') recomdouterr = subprocess.run( ['ls','-l'],stdout=subprocess.PIPE,universal_newlines=True) print('输出outerr',recomdouterr.stdout) print(len( recomdouterr.stdout.strip().split('\n') )) print(recomdouterr.stdout.strip().split('\n')[-1]) # legacycmd = subprocess.getstatusoutput('ls -l') # # print('subprocess.getstatusoutput 输出',legacycmd) # # legacycmd2 = subprocess.getoutput('ls -l') # # print('subprocess.getoutput 输出',legacycmd2)
https://docs.python.org/3.5/library/subprocess.html
Python wird immer häufiger verwendet, und Linux hat auch als Server großes Potenzial. Die Verwendung von Python zur Implementierung von Linux-Skriptoperationen vereinfacht serverseitige Vorgänge und verbessert die Steuerbarkeit.Das obige ist der detaillierte Inhalt vonVerwendung von Python3 zur Implementierung von Linux-Skriptfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!