在這個教程中,我們將學習關於 Python 系統命令的知識。之前我們學習了Python 隨機數。
Python 系統命令
在編寫 Python 程序時,您可能需要執行一些 shell 命令。例如,如果您使用 Pycharm
集成開發環境,您可能會注意到有在 github 上分享您的項目的選項。而且您可能知道文件傳輸是通過 git 來完成的,它是使用命令行操作的。因此,Pycharm 在後台執行一些 shell 命令來完成這個任務。但是,在這個教程中,我們將學習如何從您的 Python 代碼中執行一些基本的 shell 命令。
Python os.system() 函數
我們可以使用 os.system() 函數來執行系統命令。根據官方文檔的說法,它被實現為調用標準 C 函數 system(),並且具有相同的限制。
然而,如果命令生成任何输出,它将被发送到解释器的标准输出流。不建议使用此命令。在以下代码中,我们将尝试使用系统命令 git --version
来获取 git 的版本。
import os
cmd = "git --version"
returned_value = os.system(cmd) # returns the exit code in unix
print('returned value:', returned_value)
以下输出是在已安装 git 的 ubuntu 16.04 中找到的。
git version 2.14.2
returned value: 0
请注意,我们没有将 git 版本命令的输出打印到控制台,它被打印出来是因为控制台在这里是标准输出流。
Python subprocess.call() 函数
在前一节中,我们看到 os.system()
函数运行良好。但执行 shell 命令的方式不被推荐。我们将使用 Python subprocess 模块来执行系统命令。我们可以通过使用 subprocess.call()
函数来运行 shell 命令。看下面的代码,它等同于之前的代码。
import subprocess
cmd = "git --version"
returned_value = subprocess.call(cmd, shell=True) # returns the exit code in unix
print('returned value:', returned_value)
输出也将相同。
Python subprocess.check_output() 函数
到目前為止,我們使用Python的系統命令來執行操作。但我們無法操縱這些命令產生的輸出。使用subprocess.check_output()
函數,我們可以將輸出存儲在一個變量中。
import subprocess
cmd = "date"
# 返回字節串作為輸出
returned_output = subprocess.check_output(cmd)
# 使用decode()函數將字節串轉換為字符串
print('Current date is:', returned_output.decode("utf-8"))
它將產生以下輸出
Current date is: Thu Oct 5 16:31:41 IST 2017
因此,在上述部分中,我們已經討論了關於執行Python系統命令的基本想法。但學習是無止境的。如果您願意,您可以從官方文檔中進一步了解有關使用subprocess模塊的Python系統命令。
Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call