os 模組代表了程式所在的作業系統,主要用於獲取程式執行所在作業系統的相關資訊。
在 python 的互動式直譯器中先導入 os 模組,然後輸入 os.__all__ 命令(__all__ 變數代表了該模組開放的公開介面),即可看到該模組所包含的全部屬性和函式。
此處僅介紹 os 模組中常用的屬性和函式:
下面程式示範了 os 模組的大部分函式的用法:
import os
# 顯示匯入依賴模組的作業系統的名稱
print(os.name)
# 獲取pythonpath環境變數的值
print(os.getenv('pythonpath'))
# 返回當前系統的登入使用者名稱
print(os.getlogin())
# 獲取當前程序id
print(os.getpid())
# 獲取當前程序的父程序id
print(os.getppid())
# 返回當前系統的cpu數量
print(os.cpu_count())
# 返回路徑分隔符
print(os.sep)
# 返回當前系統的路徑分隔符
print(os.pathsep)
# 返回當前系統的換行符
print(os.linesep)
# 返回適合作為加密使用的、最多3個位元組組成的bytes
print(os.urandom(3))
執行上面程式,可以看到如下輸出結果:
ntnone
yeeku
9904
120368\
;b'\x12\x1e\xcf'
從上面的輸出結果可以看出,在 windows 系統上 python 匯入依賴模組的作業系統名稱為「nt」;當前系統的登入使用者名稱是「yeeku」:當前程序 id 為「9904」;當前程序的父程序 id 為「12036」;當前系統上有 8 個 cpu;當前系統(windows)的路徑分隔符是「\」;當前系統(windows)上多條路徑之間的分隔符是分號(;);但在當前系統(windows)上換行符不能明顯看到,這是因為當在控制台輸出「\r\n」 時才會產生兩個空行。
此外,在 os 模組下還包含大量操作檔案和目錄的功能函式,本教程將會在後續章節專門介紹這些功能函式。
在 o 模組下還包含各種程序管理函式,它們可用於啟動新程序、中止己有程序等。在 os 模組下與程序管理相關的函式如下:
os.abort():生成乙個 sigabrt 訊號給當前程序。在 unix 系統上,預設行為是生成核心轉儲;在 windows 系統上,程序立即返回退出** 3。
os.execl(path, arg0, arg1, ...):該函式還有一系列功能類似的函式,比如 os.exe 等,這些函式都是使用引數列表 arg0, arg1,...來執行 path 所代表的執行檔案的。
os.forkpty():fork乙個子程序。
os.kill(pid, sig):將 sig 訊號傳送到 pid 對應的過程,用於結束該程序。
os.killpg(pgid, sigwww.cppcns.com):將 sig 訊號傳送到 pgid 對應的程序組。
os.popen(cmd, mode='r', buffering=-1):用於向 cmd 命令開啟讀寫管道(當 mode 為 r 時為唯讀管道,當 mode 為 rw 時為讀寫管道),buffering 緩衝引數與內建的 open() 函式有相同的含義。該函式返回的檔案物件用於讀寫字串,而不是位元組。
os.spawnl(mode, path, ...):該函式還有一系列功能類似的函式,比如 os.spawnle()、os.spawnlp() 等,這些函式都用於在新程序中執行新程式。
os.startfile(path[,operation]):對指定檔案使用該檔案關聯的工具執行 operation 對應的操作。如果不指定 operation 操作,則預設執行開啟(open)操作。operation 引數必須是有效的命令列操作專案,比如 open(開啟)、edit(編輯)、print(列印)等。
os.system(command):執行作業系統上的指定命令。
下面程式示範了在 os 模組中與程序管理相關的函式的功能:
import os
# 執行平台上的cmd命令
os.system('cmd')
# 使用excel開啟g:\abc.xls檔案
os.startfile('g:\\abc.xls')
os.spawnl(os.p_nowait, 'e:\\tools\\編輯工具\\notepad++.7.5.6.bin.x64\\notepad++.exe', ' ')
# 使用python命令執行os_test.py程式
os.execl("d:\\python\\python36\\python.exe", " ", 'os_test.py', 'i')
如果直接執行上面程式,可以看到程式執行後使用 excel 開啟了 abe.xls 檔案,也開啟了 notepad++ 工具,還使用 python 命令執行了 os_test.py 檔案。但如果將程式中粗體字**取消注釋,將看到程式執行後只是啟動了 cmd 命令列程式,這是因為使用 as.system() 函式來執行程式時,新程式所在的程序會替代原有的程序。
知識點補充:
os就是「operating system」的縮寫,顧名思義,os模組提供的就是各種 python 程式與作業系統進行互動的介面。通過使用os模組,一方面可以方便地與作業系統進行互動,另一方面頁可以極大增強**的可移植性。如果該模組中相關功能出錯,會丟擲oserror異常或其子類異常。
注意如果是讀寫檔案的話,建議使用內建函式open();
如果是路徑相關的操作,建議使程式設計客棧用os的子模組os.path;
如果要逐行讀取多個檔案,建議使用fileinput模組;
要建立臨時檔案或路徑,建議使用tempfile模組;
要進行更高階的檔案和路徑操作則應當使用shutil模組。
python學習之os模組
1.在python中os模組是乙個系統封裝好的乙個模組,通過該模組可針作業系統進行一些列的操作,利用該模組作為輔助性工作是非常方便有效的。好了,見如下詳情。2,os模組中常用的一些屬性 os.name 表示的當前的作業系統的型別,win下為nt,linux作業系統下為posix。os.getcwd ...
python學習之os模組
1 window下的路徑分隔符和mac上的一樣嗎 在win下用 做路徑分隔符,mac裡用 2 如何檢視當前工作目錄 import os os.getcwd 3 如何切換當前工作目錄 import os os.chdir e 4 如何建立新資料夾 os.makedirs c python wim lo...
Python知識之os模組學習
1.os模組 對於檔案和目錄進行處理 目錄 就是資料夾 屬性 os.name 檢視當前系統的型別 如果是windows nt 如果是max posix os.environ 返回當前系統的環境變數 所有 函式 os.environ.get 獲取指定的某乙個環境變數 路徑分類 絕對路徑 帶碟符根目錄的...