1.1 os.system(command)
在一個子shell中運行command命令,并返回command命令執(zhí)行完畢后的退出狀態(tài),
python調用shell的方法
。這實際上是使用C標準庫函數(shù)system()實現(xiàn)的。這個函數(shù)在執(zhí)行command命令時需要重新打開一個終端,并且無法保存command命令的執(zhí)行結果。1.2 os.popen(command,mode)
打開一個與command進程之間的管道。這個函數(shù)的返回值是一個文件對象,可以讀或者寫(由mode決定,mode默認是'r')。如果mode為'r',可以使用此函數(shù)的返回值調用read()來獲取command命令的執(zhí)行結果。
1.3 commands.getstatusoutput(command)
使用os. getstatusoutput ()函數(shù)執(zhí)行command命令并返回一個元組(status,output),分別表示command命令執(zhí)行的返回狀態(tài)和執(zhí)行結果。對command的執(zhí)行實際上是按照{command;} 2>&1的方式,所以output中包含控制臺輸出信息或者錯誤信息。output中不包含尾部的換行符。
2.1 subprocess.call(["some_command","some_argument","another_argument_or_path"])
subprocess.call(command,shell=True)
2.2 subprocess.Popen(command, shell=True)
如果command不是一個可執(zhí)行文件,shell=True不可省。
使用subprocess模塊可以創(chuàng)建新的進程,可以與新建進程的輸入/輸出/錯誤管道連通,并可以獲得新建進程執(zhí)行的返回狀態(tài)。使用subprocess模塊的目的是替代os.system()、os.popen*()、commands.*等舊的函數(shù)或模塊。
最簡單的方法是使用class subprocess.Popen(command,shell=True)。Popen類有Popen.stdin,Popen.stdout,Popen.stderr三個有用的屬性,可以實現(xiàn)與子進程的通信。
將調用shell的結果賦值給python變量
復制代碼代碼如下:
handle = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
print handle.communicate()[0]
在Python/wxPython環(huán)境下,執(zhí)行外部命令或者說在Python程序中啟動另一個程序的方法一般有這么幾個:
1、os.system(command)
2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)
若置syn為wx.EXEC_ASYNC則wx.Excute函數(shù)立即返回,若syn=wx.EXEC_SYNC則等待調用的程序結束后再返回。
callback是一個wx.Process變量,如果callback不為None且syn=wx.EXEC_ASYNC,則程序結束后將調用wx.Process.OnTerminate()函數(shù)。
os.system()和wx.Execute()都利用系統(tǒng)的shell,執(zhí)行時會出現(xiàn)shell窗口。如在Windows下會彈出控制臺窗口,不美觀。下面的兩種方法則沒有這個缺點。
3、class subprocess.Popen
最簡單的用法是:
復制代碼代碼如下:
import subprocess
subprocess.Popen(command, shell=True)
如果command不是一個可執(zhí)行文件,shell=True不可省。
前面三個方法只能用于執(zhí)行程序和打開文件,不能處理URL,打開URL地址可用webbrowser模塊提供的功能,
電腦資料
《python調用shell的方法》(http://www.oriental01.com)。4、webbrowser.open(url)
調用系統(tǒng)缺省瀏覽器打開URL地址,如 webbrowser.open('http://www.jb51.net'),也可以利用
webbrowser.open('h:\python.zip')來執(zhí)行程序。這樣可以不必區(qū)分是文件名還是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1運行。
modify:還有一種方式:subprocess.call(*args, **kwargs)
您可能感興趣的文章:
php使用exec shell命令注入的方法講解
Android執(zhí)行shell命令詳解
解析如何在C語言中調用shell命令的實現(xiàn)方法
神奇的shell命令行輸入與輸出功能介紹
用shell命令讀取與輸出數(shù)據的代碼
linux shell命令執(zhí)行順序的控制方法
合并一個文件夾下多個文件內容的單行shell命令
linux shell命令的常用快捷鍵
python和shell變量互相傳遞的幾種方法
QQ空間 搜狐微博 人人網 開心網 百度搜藏更多
Tags:shell命令
復制鏈接收藏本文打印本文關閉本文返回首頁
上一篇:python和shell變量互相傳遞的幾種方法
下一篇:windows下wxPython開發(fā)環(huán)境安裝與配置方法
相關文章
2012-05-05ssh批量登錄并執(zhí)行命令的python實現(xiàn)代碼
2013-11-11haskell實現(xiàn)多線程服務器實例代碼
2009-02-02wxpython 學習筆記 第一天
2009-06-06python getopt 參數(shù)處理小示例
2014-04-04使用python解析xml成對應的html示例分享
2014-06-06python網絡編程學習筆記(三):socket網絡服務器
2014-04-04python使用ctypes模塊調用windowsapi獲取系統(tǒng)版本示例
2014-04-04python生成隨機驗證碼(中文驗證碼)示例
2014-04-04Python 時間操作例子和時間格式化參數(shù)小結
2014-01-01python回調函數(shù)的使用方法
文章評論
最 近 更 新
python實現(xiàn)ftp客戶端示例分享
python 實現(xiàn)插入排序算法
Python中文編碼那些事
讓python json encode datetime類型
Python Trie樹實現(xiàn)字典排序
python列表與元組詳解實例
二種python發(fā)送郵件實例講解(python發(fā)郵件
python去掉字符串中重復字符的方法
python標準日志模塊logging的使用方法
python翻譯軟件實現(xiàn)代碼(使用google api完
熱 點 排 行
Python入門教程 超詳細1小時學會
python 中文亂碼問題深入分析
比較詳細Python正則表達式操作指
Python字符串的encode與decode研
Python open讀寫文件實現(xiàn)腳本
Python enumerate遍歷數(shù)組示例應
Python 深入理解yield
Python+Django在windows下的開發(fā)
python 文件和路徑操作函數(shù)小結
python 字符串split的用法分享