首頁 > 後端開發 > Python教學 > Python 3.x 中如何使用subprocess模組執行外部指令

Python 3.x 中如何使用subprocess模組執行外部指令

WBOY
發布: 2023-07-30 17:01:23
原創
1057 人瀏覽過

Python 3.x 中如何使用subprocess模組執行外部命令

在Python中,我們經常需要執行系統命令,例如運行其他程序,執行shell命令等。 Python提供了subprocess模組,讓我們可以方便地呼叫外部命令並取得其輸出。

本篇文章將介紹如何使用Python 3.x 中的subprocess模組來執行外部指令,並提供一些範例程式碼。

  1. 透過subprocess.run()函數執行外部指令
    subprocess.run()函數是Python 3.5及更高版本中新增的函數,它用於執行指定的外部命令。

下面是一個簡單的範例,示範如何使用subprocess.run()函數執行外部命令,並取得指令的輸出:

import subprocess

# 执行外部命令
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)

# 获取命令的输出
output = result.stdout

# 输出到控制台
print(output) 
登入後複製

在上面的程式碼中,我們使用subprocess.run()函數執行了ls -l指令。這裡我們使用了兩個參數來控制指令的執行:capture_output=True 表示將指令的輸出擷取到result物件中,text=True 表示將輸出以文字形式傳回。

  1. 透過subprocess.Popen()函數執行外部命令
    subprocess模組也提供了Popen類,它是一個更底層的接口,可以用來執行更複雜的命令,並對命令的輸入/輸出進行更精細的控制。

下面是一個範例,示範如何使用subprocess.Popen()函數執行外部命令,並對命令的輸出進行逐行讀取:

import subprocess

# 执行外部命令
process = subprocess.Popen(['ping', 'www.baidu.com'], stdout=subprocess.PIPE, text=True)

# 逐行读取输出
for line in process.stdout:
    print(line.strip())
登入後複製

在上面的程式碼中,我們使用subprocess.Popen()函數執行了ping www.baidu.com命令,並將命令的輸出透過stdout管道傳回。我們透過遍歷stdout管道逐行讀取命令的輸出,並列印到控制台。

要注意的是,當使用Popen類別執行指令時,並不會自動等待指令執行完畢。如果需要等待指令執行完畢,可以透過process.wait()函數來實現。

  1. 透過subprocess.call()函數執行外部命令
    subprocess模組也提供了call函數,用於執行外部命令,並等待其執行完畢。

下面是一個範例,示範如何使用subprocess.call()函數執行外部指令,並取得指令的回傳碼:

import subprocess

# 执行外部命令
return_code = subprocess.call(['git', 'clone', 'https://github.com/username/repo'])

# 输出返回码
print(return_code)
登入後複製

在上面的程式碼中,我們使用subprocess .call()函數執行了git clone指令,並傳遞了倉庫的位址作為參數。透過呼叫subprocess.call()函數執行指令後,會阻塞程序,直到指令執行完畢。

這裡透過return_code可以取得到指令的回傳碼,可以根據回傳碼來判斷指令是否執行成功。

總結:
透過subprocess模組,我們可以在Python中方便地執行外部指令,並取得指令的輸出和回傳碼。本篇文章介紹了三種常用的方法:subprocess.run()、subprocess.Popen()和subprocess.call()。根據不同的需求,選擇合適的方法來執行外部命令。

希望這篇文章對你了解Python 3.x 中如何使用subprocess模組執行外部指令有所幫助。

以上是Python 3.x 中如何使用subprocess模組執行外部指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板