1、使用os.system()方法
os.system
用來執行cmd指令,在cmd輸出的內容會直接在控制臺輸出,返回結果為0表示執行成功。
示例代碼:
1
2
3
4
5
|
# coding:utf-8 import os os.system( "ls" ) |
PS:os.system()
方法是簡單粗暴的執行cmd指令,沒有辦法獲取到cmd
輸出的內容。
PPS:os.system()
方法在調用完shell腳本后,返回一個16位的二進制數,低位為殺死所調用腳本的信號號碼,高位為腳本的退出狀態碼,即腳本中“exit 1”的代碼執行后,os.system
函數返回值的高位數則是1,如果低位數是0的情況下,則函數的返回值是0x0100,換算為十進制得到256。
2、使用os.popen()方法
os.popen()
方法用于從一個命令打開一個管道。在Unix
,Windows
中有效。os.popen
返回的是一個file對象,同open打開文件一樣操作。
popen()方法語法格式如下:
1
|
os.popen(command[, mode[, bufsize]]) |
參數:
1
2
3
|
command – 使用的命令。 mode – 模式權限可以是 ‘r '(默認) 或 ‘w' 。 bufsize – 指明了文件需要的緩沖大小: 0 意味著無緩沖; 1 意味著行緩沖;其它正值表示使用參數大小的緩沖(大概值,以字節為單位)。負的bufsize意味著使用系統的默認值,一般來說,對于tty設備,它是行緩沖;對于其它文件,它是全緩沖。如果沒有改參數,使用系統的默認值。 |
示例代碼:
1
2
3
4
5
6
7
8
9
10
|
# coding:utf-8 import os # popen返回文件對象,同open操作一樣 f = os.popen(r "ls" , "r" ) l = f.read() print (l) f.close() |
返回值是文件對象的推薦處理方法:
1
2
|
with os.popen(cmd, "r" ) as p: r = p.read() |
使用它,不需要顯式的寫p.close()。
PS:os.popen()
方法是非阻塞的。
3、使用subprocess.Popen()
python2.4
版本后,提供了subprocess
這個模塊來產生子進程,并且可以連接到子進程的標準輸入、輸出、錯誤中,還可以獲得子進程的返回值。
subprocess.Popen()的定義如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
class subprocess.Popen( args, bufsize = 0 , executable = None , stdin = None , stdout = None , stderr = None , preexec_fn = None , close_fds = False , shell = False , cwd = None , env = None , universal_newlines = False , startupinfo = None , creationflags = 0 ) |
其參數意義在此不贅述。一段簡單的示例代碼:
1
2
3
4
5
6
7
|
# coding:utf-8 import subprocess p = subprocess.Popen( "ls" , shell = True , stdout = subprocess.PIPE) r = p.stdout.read() print (r) |
PS:subprocess
提供了2種方法調用子程序。subprocess.call()
是阻塞式的,subprocess.Popen()
是非阻塞的。
到此這篇關于在Python
中執行cmd的文章就介紹到這了,更多相關Python中執行cmd
內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://segmentfault.com/a/1190000040734370