首頁 >後端開發 >Python教學 >在您的Python程式中執行Unix指令的方法

在您的Python程式中執行Unix指令的方法

WBOY
WBOY原創
2023-08-30 10:45:121498瀏覽

在您的Python程式中執行Unix指令的方法

Unix 是一種作業系統,由 Ken Thompson 和 Dennis Ritchie 於 1969 年左右在 AT&T 貝爾實驗室開發。我們可以使用許多有趣的 Unix 指令來執行不同的任務。問題是,我們可以直接在Python程式中使用這樣的指令嗎?這就是我將在本教程中向您展示的內容。

Unix指令ls列出目錄中的所有檔案。如果您將 ls 原樣放入 Python 腳本中,則執行程式時將得到以下結果:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    ls
NameError: name 'ls' is not defined

這表示Python解釋器將ls視為變數並要求對其進行定義(即初始化),並且沒有將其視為Unix命令。

os.system()

此問題的一個解決方案是使用 Python os 模組中的 os.system()

如同文件中所提到的,os.system():

#在子 shell 中執行指令(字串)。這是透過呼叫標準C函數system()來實現的,並且具有相同的限制。

因此我們可以在Python中執行ls指令,如下所示:

import os
os.system('ls')

這將傳回目前目錄中的檔案列表,這是 .py 程式所在的位置。我目前的目錄如下所示:

env  unixfile.py  workwithexcel

我們再舉一個例子。如果要傳回目前日期和時間,可以使用Unix指令date,如下所示:

import os
os.system('date')

就我而言,這就是我透過上述腳本得到的結果:

Thu 24 Apr 2022 10:42:41 AM EAT

呼叫()

儘管 os.system() 可以工作,但不建議使用,因為它被認為有點舊且已棄用。更好的解決方案是 Python 子進程模組中的 call(args) 函數。正如有關此功能的文檔中所提到的:

執行 args 描述的命令。等待指令完成,然後傳回 returncode 屬性。

如果我們想使用這種方法來執行 ls Unix 指令,我們可以執行以下操作:

from subprocess import call
call('ls')

讓我們看看如何使用 subprocess 模組傳回日期,但讓我們讓範例變得更有趣。

import subprocess 
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = time.communicate()
print('Todays date is ', output)

使用 check_output() 可以更簡單地執行上面的範例,如下所示:

import subprocess 
time = subprocess.check_output('date')
print('Todays date is', time)

上述腳本的輸出是:

Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'

上面的範例展示了使用不同的 subprocess 函數的靈活性,以及​​我們如何將結果傳遞給變數以進行進一步的操作。

結論

正如我們在本教程中看到的,可以使用 subprocess 模組呼叫和執行 Unix 命令,該模組透過其不同的功能在使用 Unix 命令時提供了很大的靈活性。您可以在 Python 文件中了解有關此模組及其不同功能的更多資訊。

以上是在您的Python程式中執行Unix指令的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn