Python學(xué)習(xí)之os模塊及用法
os 模塊代表了程序所在的操作系統(tǒng),主要用于獲取程序運(yùn)行所在操作系統(tǒng)的相關(guān)信息。
在 Python 的交互式解釋器中先導(dǎo)入 os 模塊,然后輸入 os.__all__ 命令(__all__ 變量代表了該模塊開(kāi)放的公開(kāi)接口),即可看到該模塊所包含的全部屬性和函數(shù)。
此處僅介紹 os 模塊中常用的屬性和函數(shù):
- os.name:返回導(dǎo)入依賴(lài)模塊的操作系統(tǒng)名稱(chēng),通常可返回 'posix'、'nt'、 'java' 等值其中之一。
- os.environ:返回在當(dāng)前系統(tǒng)上所有環(huán)境變量組成的字典。
- os.fsencode(filename):該函數(shù)對(duì)類(lèi)路徑(path-like)的文件名進(jìn)行編碼。
- os.fsdecode(filename):該函數(shù)對(duì)類(lèi)路徑(path-like)的文件名進(jìn)行解碼。
- os.PathLike:這是一個(gè)類(lèi),代表一個(gè)類(lèi)路徑(path-like)對(duì)象。
- os.getenv(key, default=None):獲取指定環(huán)境變量的值。
- os.getlogin():返回當(dāng)前系統(tǒng)的登錄用戶(hù)名。與該函數(shù)對(duì)應(yīng)的還有 os.getuid()、os.getgroups()、os.getgid() 等函數(shù),用于獲取用戶(hù) ID、用戶(hù)組、組 ID 等,這些函數(shù)通常只在 UNIX 系統(tǒng)上有效。
- os.getpid():獲取當(dāng)前進(jìn)程 ID。
- os.getppid():獲取當(dāng)前進(jìn)程的父進(jìn)程 ID。
- os.putenv(key, value):該函數(shù)用于設(shè)置環(huán)境變量。
- os.cpu_count():返回當(dāng)前系統(tǒng)的 CPU 數(shù)量。
- os.sep:返回路徑分隔符。
- os.pathsep:返回當(dāng)前系統(tǒng)上多條路徑之間的分隔符。一般在 Windows 系統(tǒng)上多條路徑之間的分隔符是英文分號(hào)(;);在 UNIX 及類(lèi) UNIX 系統(tǒng)(如 Linux、Mac os X)上多條路徑之間的分隔符是英文冒號(hào)(:)。
- os.linesep:返回當(dāng)前系統(tǒng)的換行符。一般在 Windows 系統(tǒng)上換行符是“\r\n”:在 UNIX 系統(tǒng)上換行符是“\n”;在 Mac os X 系統(tǒng)上換行符是“\r”。
- os.urandom(size):返回適合作為加密使用的、最多由 N 個(gè)字節(jié)組成的 bytes 對(duì)象。該函數(shù)通過(guò)操作系統(tǒng)特定的隨機(jī)性來(lái)源返回隨機(jī)字節(jié),該隨機(jī)字節(jié)通常是不可預(yù)測(cè)的,因此適用于絕大部分加密場(chǎng)景。
下面程序示范了 os 模塊的大部分函數(shù)的用法:
import os
# 顯示導(dǎo)入依賴(lài)模塊的操作系統(tǒng)的名稱(chēng)
print(os.name)
# 獲取PYTHONPATH環(huán)境變量的值
print(os.getenv('PYTHONPATH'))
# 返回當(dāng)前系統(tǒng)的登錄用戶(hù)名
print(os.getlogin())
# 獲取當(dāng)前進(jìn)程ID
print(os.getpid())
# 獲取當(dāng)前進(jìn)程的父進(jìn)程ID
print(os.getppid())
# 返回當(dāng)前系統(tǒng)的CPU數(shù)量
print(os.cpu_count())
# 返回路徑分隔符
print(os.sep)
# 返回當(dāng)前系統(tǒng)的路徑分隔符
print(os.pathsep)
# 返回當(dāng)前系統(tǒng)的換行符
print(os.linesep)
# 返回適合作為加密使用的、最多3個(gè)字節(jié)組成的bytes
print(os.urandom(3))
運(yùn)行上面程序,可以看到如下輸出結(jié)果:
nt
None
yeeku
9904
12036
8
\
;b'\x12\x1e\xcf'
從上面的輸出結(jié)果可以看出,在 Windows 系統(tǒng)上 Python 導(dǎo)入依賴(lài)模塊的操作系統(tǒng)名稱(chēng)為“nt”;當(dāng)前系統(tǒng)的登錄用戶(hù)名是“yeeku”:當(dāng)前進(jìn)程 ID 為“9904”;當(dāng)前進(jìn)程的父進(jìn)程 ID 為“12036”;當(dāng)前系統(tǒng)上有 8 個(gè) CPU;當(dāng)前系統(tǒng)(Windows)的路徑分隔符是“\”;當(dāng)前系統(tǒng)(Windows)上多條路徑之間的分隔符是分號(hào)(;);但在當(dāng)前系統(tǒng)(Windows)上換行符不能明顯看到,這是因?yàn)楫?dāng)在控制臺(tái)輸出“\r\n” 時(shí)才會(huì)產(chǎn)生兩個(gè)空行。
此外,在 os 模塊下還包含大量操作文件和目錄的功能函數(shù),本教程將會(huì)在后續(xù)章節(jié)專(zhuān)門(mén)介紹這些功能函數(shù)。
在 os 模塊下還包含各種進(jìn)程管理函數(shù),它們可用于啟動(dòng)新進(jìn)程、中止己有進(jìn)程等。在 os 模塊下與進(jìn)程管理相關(guān)的函數(shù)如下:
os.abort():生成一個(gè) SIGABRT 信號(hào)給當(dāng)前進(jìn)程。在 UNIX 系統(tǒng)上,默認(rèn)行為是生成內(nèi)核轉(zhuǎn)儲(chǔ);在 Windows 系統(tǒng)上,進(jìn)程立即返回退出代碼 3。
os.execl(path, arg0, arg1, ...):該函數(shù)還有一系列功能類(lèi)似的函數(shù),比如 os.execle()、os.execlp() 等,這些函數(shù)都是使用參數(shù)列表 arg0, arg1,...來(lái)執(zhí)行 path 所代表的執(zhí)行文件的。
os.forkpty():fork一個(gè)子進(jìn)程。
os.kill(pid, sig):將 sig 信號(hào)發(fā)送到 pid 對(duì)應(yīng)的過(guò)程,用于結(jié)束該進(jìn)程。
os.killpg(pgid, sig):將 sig 信號(hào)發(fā)送到 pgid 對(duì)應(yīng)的進(jìn)程組。
os.popen(cmd, mode='r', buffering=-1):用于向 cmd 命令打開(kāi)讀寫(xiě)管道(當(dāng) mode 為 r 時(shí)為只讀管道,當(dāng) mode 為 rw 時(shí)為讀寫(xiě)管道),buffering 緩沖參數(shù)與內(nèi)置的 open() 函數(shù)有相同的含義。該函數(shù)返回的文件對(duì)象用于讀寫(xiě)字符串,而不是字節(jié)。
os.spawnl(mode, path, ...):該函數(shù)還有一系列功能類(lèi)似的函數(shù),比如 os.spawnle()、os.spawnlp() 等,這些函數(shù)都用于在新進(jìn)程中執(zhí)行新程序。
os.startfile(path[,operation]):對(duì)指定文件使用該文件關(guān)聯(lián)的工具執(zhí)行 operation 對(duì)應(yīng)的操作。如果不指定 operation 操作,則默認(rèn)執(zhí)行打開(kāi)(open)操作。operation 參數(shù)必須是有效的命令行操作項(xiàng)目,比如 open(打開(kāi))、edit(編輯)、print(打?。┑?。
os.system(command):運(yùn)行操作系統(tǒng)上的指定命令。
下面程序示范了在 os 模塊中與進(jìn)程管理相關(guān)的函數(shù)的功能:
import os
# 運(yùn)行平臺(tái)上的cmd命令
os.system('cmd')
# 使用Excel打開(kāi)g:\abc.xls文件
os.startfile('g:\\abc.xls')
os.spawnl(os.P_NOWAIT, 'E:\\Tools\\編輯工具\(yùn)\Notepad++.7.5.6.bin.x64\\notepad++.exe', ' ')
# 使用python命令執(zhí)行os_test.py程序
os.execl("D:\\Python\\Python36\\python.exe", " ", 'os_test.py', 'i')
如果直接運(yùn)行上面程序,可以看到程序運(yùn)行后使用 Excel 打開(kāi)了 abe.xls 文件,也打開(kāi)了 Notepad++ 工具,還使用 python 命令運(yùn)行了 os_test.py 文件。但如果將程序中粗體字代碼取消注釋?zhuān)瑢⒖吹匠绦蜻\(yùn)行后只是啟動(dòng)了 cmd 命令行程序,這是因?yàn)槭褂?as.system() 函數(shù)來(lái)運(yùn)行程序時(shí),新程序所在的進(jìn)程會(huì)替代原有的進(jìn)程。
知識(shí)點(diǎn)補(bǔ)充:
os就是“operating system”的縮寫(xiě),顧名思義,os模塊提供的就是各種 Python 程序與操作系統(tǒng)進(jìn)行交互的接口。通過(guò)使用os模塊,一方面可以方便地與操作系統(tǒng)進(jìn)行交互,另一方面頁(yè)可以極大增強(qiáng)代碼的可移植性。如果該模塊中相關(guān)功能出錯(cuò),會(huì)拋出OSError異?;蚱渥宇?lèi)異常。
注意
如果是讀寫(xiě)文件的話(huà),建議使用內(nèi)置函數(shù)open();
如果是路徑相關(guān)的操作,建議使用os的子模塊os.path;
如果要逐行讀取多個(gè)文件,建議使用fileinput模塊;
要?jiǎng)?chuàng)建臨時(shí)文件或路徑,建議使用tempfile模塊;
要進(jìn)行更高級(jí)的文件和路徑操作則應(yīng)當(dāng)使用shutil模塊。
到此這篇關(guān)于Python學(xué)習(xí)之os模塊及用法的文章就介紹到這了,更多相關(guān)Python os模塊及用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中os模塊的簡(jiǎn)單使用及重命名操作
- python 中os模塊os.path.exists()的用法說(shuō)明
- python os模塊和fnmatch模塊的使用介紹
- python利用os模塊編寫(xiě)文件復(fù)制功能——copy()函數(shù)用法
- python os模塊在系統(tǒng)管理中的應(yīng)用
- python os模塊常用的29種方法使用詳解
- 淺談Python中os模塊及shutil模塊的常規(guī)操作
- python標(biāo)準(zhǔn)庫(kù)OS模塊函數(shù)列表與實(shí)例全解
- Python如何使用OS模塊調(diào)用cmd
- Python os模塊常用方法和屬性總結(jié)
- 使用python os模塊復(fù)制文件到指定文件夾的方法
- Python學(xué)習(xí)筆記之讀取文件、OS模塊、異常處理、with as語(yǔ)法示例
- python os模塊簡(jiǎn)單應(yīng)用示例
- Python3.5內(nèi)置模塊之os模塊、sys模塊、shutil模塊用法實(shí)例分析
- Python OS模塊實(shí)例詳解
- python文件目錄操作之os模塊
相關(guān)文章
Python數(shù)據(jù)處理Pandas庫(kù)的使用詳解
這篇文章主要為大家詳細(xì)介紹了pandas庫(kù)的使用方法,包括數(shù)據(jù)導(dǎo)入與導(dǎo)出、數(shù)據(jù)查看和篩選、數(shù)據(jù)處理和分組操作等,感興趣的小伙伴可以了解一下2023-07-07
關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問(wèn)題(親測(cè)已解決)
這篇文章主要介紹了關(guān)于Python不換行輸出和不換行輸出end=““不顯示的問(wèn)題(親測(cè)已解決),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
基于Python腳本實(shí)現(xiàn)郵件報(bào)警功能
這篇文章主要介紹了基于Python腳本實(shí)現(xiàn)郵件報(bào)警功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
python實(shí)現(xiàn)批量解析郵件并下載附件
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)批量解析郵件并下載附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
十個(gè)簡(jiǎn)單使用的Python自動(dòng)化腳本分享
今天小編給大家分享10個(gè)Python高級(jí)腳本,幫助我們減少無(wú)謂的時(shí)間浪費(fèi),提高工作學(xué)習(xí)中的效率。文中示例代碼講解詳細(xì),需要的可以參考一下2022-05-05
Python_查看sqlite3表結(jié)構(gòu),查詢(xún)語(yǔ)句的示例代碼
今天小編就為大家分享一篇Python_查看sqlite3表結(jié)構(gòu),查詢(xún)語(yǔ)句的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python將二維數(shù)組升為一維數(shù)組或二維降為一維方法實(shí)例
在實(shí)際應(yīng)用的過(guò)程中,遇到列表或是數(shù)組的維數(shù)不同,需要變換的問(wèn)題,如二維列表/數(shù)組變成了一維列表/數(shù)組,下面這篇文章主要給大家介紹了關(guān)于python將二維數(shù)組升為一維數(shù)組或二維降為一維的相關(guān)資料,需要的朋友可以參考下2022-11-11

