Python os 模塊

Python OS 模組提供了一些簡單的函數,允許我們與操作系統進行交互,獲取操作系統信息,甚至在一定範圍內控制進程。

Python OS 模組

OS 模組提供的這些函數允許我們在底層操作系統任務,無論是 Windows 平台、Macintosh 還是 Linux。在這課程中,我們將回顧這些函數以及我們可以用它們做什麼。讓我們開始我們的旅程,了解這些函數提供的信息。

Python import os

請注意,首先我們必須在程序中 import OS 模組,然後我們才能執行任何它的函數。

os.name

此函數提供導入的作業系統模組的名稱。這根據底層作業系統而異。目前,它註冊了 ‘posix’、’os2’、’ce’、’nt’、’riscos’ 和 ‘java’。讓我們在系統上執行這個功能:

>>> print(os.name)
posix

顯然,這可以根據解釋器輸出不同的平台。

os.environ

environ 不是一個函數,而是一個進程參數,通過它我們可以訪問系統的環境變量。讓我們看一下示例代碼片段:

import os
output = os.environ['HOME']
print(output)

當我們運行這個腳本時,將會輸出以下內容:我們可以用它來處理環境變量,更多資訊請參閱Python 設置環境變量

os.execvp

execvp 函數是在系統上運行其他命令的一種方式。讓我們看一下這個函數的示例代碼片段:

import os
program = "python"
arguments = ["hello.py"]
print(os.execvp(program, (program,) +  tuple(arguments)))

為此,我們只需創建一個名為 hello.py 的示例腳本,其中包含以下代碼:

print('Hello')

執行此腳本時,將產生以下輸出:

os.getuid

這個 os 模組函數返回當前進程的使用者 ID 或 UID,因為它是眾所周知的。

>>> os.getuid()
501

所以,當前的 shell 進程 ID 是 501。

os.rename

使用 Python 的 os 重命名函數,我們可以輕鬆地重命名文件。

import os
fileDir = "JournalDev.txt"
os.rename(fd,'JournalDev_Hi.txt')

請注意,為此,我們必須為我們的腳本提供正確的權限。

os.system

Python 的 os 系統函數允許我們在 Python 腳本中運行命令,就像我在 shell 中運行它一樣。例如:

import os
currentFiles = os.system("users > users.txt")

當我運行此腳本時,同一目錄下會創建一個名為 users.txt 的新文件,內容為字符串 ‘shubham’,這也是原始 shell 返回的: 請注意,這是一個非常強大的命令,應該謹慎使用。

os.error

Python 的 os 模块错误类是与 I/O 相关的错误的基类。因此,我们可以在 except 子句中使用 OSError 捕获 I/O 错误。

import os

try:
    f = open('abc.txt', 'r')  # file is missing
except OSError:
    print('Error')

os.getpid

该函数返回当前进程的 ID,通常称为 PID。

>>> os.getpid()
71622

因此,当前 shell 进程的用户 ID 为 71622。

os.listdir

此函数只是列出当前工作目录中存在的文件和目录。

>>> import os
>>> os.listdir()
['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']

它返回一个可迭代的目录和文件名列表。

os.uname

该函数返回有关执行它的当前操作系统的信息。

>>> os.uname()
posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')

这实际上是相当详细的。

import os.path vs import os

os.path的工作方式实际上有些奇怪。它看起来像os与一个子模块path打包在一起,但实际上,os是一个普通的模块,它通过与sys.module交互来支持os.path。让我们列举一下幕后发生的事情:

  • 当Python启动时,它将许多模块加载到sys.module中。
  • os模块也在Python启动时加载。它将其path分配给os特定的模块属性。
  • 它通过sys.modules['os.path'] = path注入,使您能够像导入子模块一样使用import os.path

摘要

在这堂课上,我们了解了Python中OS模块提供的各种函数,并看到它们是如何工作的。在这里查看更多关于Python的课程参考:API文档

Source:
https://www.digitalocean.com/community/tutorials/python-os-module