Python呼叫shell命令
1.1 os.system(command)
在一個子shell中執行command命令,並返回command命令執行完畢後的退出狀態。這實際上是使用C標準庫函式system()實現的。這個函式在執行command命令時需要重新開啟一個終端,並且無法儲存command命令的執行結果。
1.2 os.popen(command,mode)
開啟一個與command程式之間的管道。這個函式的返回值是一個檔案物件,可以讀或者寫(由mode決定,mode預設是’r')。如果mode為’r',可以使用此函式的返回值呼叫read()來獲取command命令的執行結果。
os.system(cmd)或os.popen(cmd),前者返回值是指令碼的退出狀態碼,後者的返回值是指令碼執行過程中的輸出內容。實際使用時視需求情況而選擇。
1.3 commands.getstatusoutput(command)
使用commands.getstatusoutput函式執行command命令並返回一個元組(status,output),分別表示 command命令執行的返回狀態和執行結果。對command的執行實際上是按照{command;} 2>&1的方式,所以output中包含控制檯輸出資訊或者錯誤資訊。output中不包含尾部的換行符。
例項:
>>>import commands
>>> status, utput = commands.getstatusoutput('ls -l')
使用subprocess模組可以建立新的程式,可以與新建程式的輸入/輸出/錯誤管道連通,並可以獲得新建程式執行的返回狀態。使用subprocess模組的目的是替代os.system()、os.popen*()、commands.*等舊的函式或模組。
2.1 subprocess.call(["some_command","some_argument","another_argument_or_path"])
subprocess.call(command,shell=True)
例項:
handle = subprocess.call('ls -l', shell=True)
2.2 subprocess.Popen(command, shell=True)
如果command不是一個可執行檔案,shell=True不可省。
最簡單的方法是使用class
subprocess.Popen(command,shell=True)。Popen類有
Popen.stdin,Popen.stdout,Popen.stderr三個有用的屬性,可以實現與子程式的通訊。
將呼叫shell的結果賦值給python變數
handle = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
例項:
handle = subprocess.Popen('ls -l', stdout=subprocess.PIPE, shell=True)
handle = subprocess.Popen(['ls','-l'], stdout=subprocess.PIPE, shell=True)
handle = subprocess.Popen(args='ls -l', stdout=subprocess.PIPE, shell=True)
print handle.stdout.read()
print handle.communicate()[0]
------------------------------------------
1 #!/bin/env python
2
3 import subprocess
4 #handle1 = subprocess.call('df -h',shell=True)
5 print '------------2--------------'
6 handle2 = subprocess.Popen('df -h ',stdout=subprocess.PIPE, shell=True)
7 print handle2.stdout.read()
8 print '------------3--------------'
9 handle3 = subprocess.Popen(['df -h '],stdout=subprocess.PIPE, shell=True)
10 print handle3.stdout.read()
11 print '------------4--------------'
12 handle4 = subprocess.Popen(args='df -h ',stdout=subprocess.PIPE, shell=True)
13 print handle4.stdout.read()
14 print '------------5--------------'
15 handle5 = subprocess.Popen(args='df -h ',stdout=subprocess.PIPE, shell=True)
16 print handle5.communicate()[0]
~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-749916/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows下 power shell啟動,呼叫ssh命令Windows
- 如何呼叫python中的shell指令碼?Python指令碼
- python裡執行shell命令或cmd命令Python
- 六種用ruby呼叫執行shell命令的方法
- 解決linux oracle shell上下箭呼叫歷史命令LinuxOracle
- Hadoop Shell命令 |HDFS Shell命令| HDFS 命令Hadoop
- Python 非同步呼叫命令列工具Python非同步命令列
- Shell命令
- python 呼叫 shell ,獲取返回值和返回資訊Python
- Python-呼叫執行系統命令Python
- shell中呼叫shell的三種方式&並行shell並行
- shell指令碼命令 執行python檔案&python命令列執行python程式碼指令碼Python命令列
- shell命令(一)
- Shell printf 命令
- Shell test 命令
- Hive shell 命令Hive
- HDFS shell命令
- Shell命令列命令列
- hbase shell命令
- 常用shell 命令
- C++/Php/Python語言執行shell命令C++PHPPython
- 利用SCHEDULER呼叫shell指令碼指令碼
- 使用Python和Java呼叫Shell指令碼時的死鎖陷阱PythonJava指令碼
- python如何呼叫subprocess模組實現外部命令?Python
- 如何用Python呼叫系統命令呢?常用方法!Python
- shell 基礎命令
- shell基本命令
- 開發 Shell 命令
- HBase 常用Shell命令
- Shell歷史命令
- shell eval命令使用
- SHell命令總結
- Hadoop Shell命令Hadoop
- android: shell 命令Android
- shell的命令(轉)
- 一條shell命令
- 【SHELL】grep 命令用法
- 強大好用的shell之shell命令