Python里如何打開外部程序,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
10年積累的成都網(wǎng)站設計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有秀英免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
在編寫代碼中,經(jīng)常會遇到在 Python程序中打開外部程序的需求,那么在Python里如何打開外部程序呢?今天我們來介紹四種不同的方式,供大家參考收藏。
使用 os.system()
os.system(command)是最簡單的一種方式,我們import os模塊,并調用它的system() 方法即可。
參考以下例子:
通過簡單兩行代碼即可在我的電腦上打開 qq程序,因為我是在MacOS 系統(tǒng)里,所以需要在可執(zhí)行文件之前加一個open,如果是 windows只需要填寫可執(zhí)行文件的絕對路徑即可。
現(xiàn)在我們可以調用稍微復雜一點的命令,實現(xiàn)在 Python中調用ping命令:
不過os.system()的缺點是無法獲取調用后的返回結果,只能通過:
os.system("ping www.baidu.com > result.txt") 這樣的方式把結果管道輸出到本地文件里。
system的返回值只會有0(成功),1和2表示失敗。
總結起來 system()一共干了三件事情:
從主進程中fork一個子進程。
在子進程中調用python的exec函數(shù)去執(zhí)行命令。
在主進程中調用wait(阻塞)等待子進程結束。
如果 對于fork失敗,system()函數(shù)返回-1。
使用 os.popen()
os.popen(command) 的調用方式和os.system()類似,不過它是通過創(chuàng)建一個管道的方式來fork子進程實現(xiàn)調用程序的。
我們可以通過讀取popen的返回對象,以便獲取執(zhí)行結果。
以上代碼我們可以發(fā)現(xiàn)對返回對象執(zhí)行read()方法即可獲取程序執(zhí)行后的返回結果。
使用 subprocess.open()
subprocess這個模塊在Python用于產(chǎn)生子進程,可以連接子進程的標準輸入輸出,并且可以得到子進程的返回值。
以下是subprocess.Popen()模塊的參數(shù)定義:
subprocess.Popen() 的參數(shù)解釋:
以下通過subprocess.Popen() 執(zhí)行tree命令,樹形結構顯示當前程序路徑下的所有文件和目錄:
Popen的參數(shù)可以是字符串(string),也可以是列表(list)。
參考兩個以下例子:
subprocess.Popen(["cat","test.md"]) subprocess.Popen("cat test.txt", shell=True)
Popen()還有更多的高級用法,歡迎參考官方文檔進行學習。
使用subprocess.call()
subporcess模塊還有一個call() 方法,可以用于更加簡單的調用外部命令。
subprocess.call (*popenargs , **kwargs )
call的使用方法和Popen基本一致,沒有太大的區(qū)別,在這里只是多介紹一種使用方式。
os.system()用于簡單執(zhí)行命令,可以顯示執(zhí)行結果。
os.popen()用于簡單執(zhí)行命令,不能顯示執(zhí)行結果,可以通過變量返回執(zhí)行結果。
subprocess.Popen() 用于執(zhí)行復雜命令,可以顯示執(zhí)行結果,可以設置輸出內容。
subprocess.call() 用于執(zhí)行復雜命令,可以顯示執(zhí)行結果,可以設置輸出內容。
看完上述內容,你們掌握Python里如何打開外部程序的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
新聞名稱:Python里如何打開外部程序
URL網(wǎng)址:http://www.rwnh.cn/article18/jsdigp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站制作、網(wǎng)站維護、外貿(mào)網(wǎng)站建設、自適應網(wǎng)站、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)