您好,登錄后才能下訂單哦!
這篇文章主要講解了Python中os模塊的學(xué)習(xí)與用法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
os 模塊代表了程序所在的操作系統(tǒng),主要用于獲取程序運(yùn)行所在操作系統(tǒng)的相關(guān)信息。
在 Python 的交互式解釋器中先導(dǎo)入 os 模塊,然后輸入 os.__all__ 命令(__all__ 變量代表了該模塊開放的公開接口),即可看到該模塊所包含的全部屬性和函數(shù)。
此處僅介紹 os 模塊中常用的屬性和函數(shù):
下面程序示范了 os 模塊的大部分函數(shù)的用法:
import os # 顯示導(dǎo)入依賴模塊的操作系統(tǒng)的名稱 print(os.name) # 獲取PYTHONPATH環(huán)境變量的值 print(os.getenv('PYTHONPATH')) # 返回當(dāng)前系統(tǒng)的登錄用戶名 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)入依賴模塊的操作系統(tǒng)名稱為“nt”;當(dāng)前系統(tǒng)的登錄用戶名是“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)上多條路徑之間的分隔符是分號(;);但在當(dāng)前系統(tǒng)(Windows)上換行符不能明顯看到,這是因?yàn)楫?dāng)在控制臺輸出“\r\n” 時(shí)才會產(chǎn)生兩個(gè)空行。
此外,在 os 模塊下還包含大量操作文件和目錄的功能函數(shù),本教程將會在后續(xù)章節(jié)專門介紹這些功能函數(shù)。
在 os 模塊下還包含各種進(jìn)程管理函數(shù),它們可用于啟動(dòng)新進(jìn)程、中止己有進(jìn)程等。在 os 模塊下與進(jìn)程管理相關(guān)的函數(shù)如下:
os.abort():生成一個(gè) SIGABRT 信號給當(dāng)前進(jìn)程。在 UNIX 系統(tǒng)上,默認(rèn)行為是生成內(nèi)核轉(zhuǎn)儲;在 Windows 系統(tǒng)上,進(jìn)程立即返回退出代碼 3。
os.execl(path, arg0, arg1, ...):該函數(shù)還有一系列功能類似的函數(shù),比如 os.execle()、os.execlp() 等,這些函數(shù)都是使用參數(shù)列表 arg0, arg1,...來執(zhí)行 path 所代表的執(zhí)行文件的。
os.forkpty():fork一個(gè)子進(jìn)程。
os.kill(pid, sig):將 sig 信號發(fā)送到 pid 對應(yīng)的過程,用于結(jié)束該進(jìn)程。
os.killpg(pgid, sig):將 sig 信號發(fā)送到 pgid 對應(yīng)的進(jìn)程組。
os.popen(cmd, mode='r', buffering=-1):用于向 cmd 命令打開讀寫管道(當(dāng) mode 為 r 時(shí)為只讀管道,當(dāng) mode 為 rw 時(shí)為讀寫管道),buffering 緩沖參數(shù)與內(nèi)置的 open() 函數(shù)有相同的含義。該函數(shù)返回的文件對象用于讀寫字符串,而不是字節(jié)。
os.spawnl(mode, path, ...):該函數(shù)還有一系列功能類似的函數(shù),比如 os.spawnle()、os.spawnlp() 等,這些函數(shù)都用于在新進(jìn)程中執(zhí)行新程序。
os.startfile(path[,operation]):對指定文件使用該文件關(guān)聯(lián)的工具執(zhí)行 operation 對應(yīng)的操作。如果不指定 operation 操作,則默認(rèn)執(zhí)行打開(open)操作。operation 參數(shù)必須是有效的命令行操作項(xiàng)目,比如 open(打開)、edit(編輯)、print(打?。┑取?/p>
os.system(command):運(yùn)行操作系統(tǒng)上的指定命令。
下面程序示范了在 os 模塊中與進(jìn)程管理相關(guān)的函數(shù)的功能:
import os # 運(yùn)行平臺上的cmd命令 os.system('cmd') # 使用Excel打開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 打開了 abe.xls 文件,也打開了 Notepad++ 工具,還使用 python 命令運(yùn)行了 os_test.py 文件。但如果將程序中粗體字代碼取消注釋,將看到程序運(yùn)行后只是啟動(dòng)了 cmd 命令行程序,這是因?yàn)槭褂?as.system() 函數(shù)來運(yùn)行程序時(shí),新程序所在的進(jìn)程會替代原有的進(jìn)程。
知識點(diǎn)補(bǔ)充:
os就是“operating system”的縮寫,顧名思義,os模塊提供的就是各種 Python 程序與操作系統(tǒng)進(jìn)行交互的接口。通過使用os模塊,一方面可以方便地與操作系統(tǒng)進(jìn)行交互,另一方面頁可以極大增強(qiáng)代碼的可移植性。如果該模塊中相關(guān)功能出錯(cuò),會拋出OSError異?;蚱渥宇惍惓!?/p>
注意
如果是讀寫文件的話,建議使用內(nèi)置函數(shù)open();
如果是路徑相關(guān)的操作,建議使用os的子模塊os.path;
如果要逐行讀取多個(gè)文件,建議使用fileinput模塊;
要?jiǎng)?chuàng)建臨時(shí)文件或路徑,建議使用tempfile模塊;
要進(jìn)行更高級的文件和路徑操作則應(yīng)當(dāng)使用shutil模塊。
看完上述內(nèi)容,是不是對Python中os模塊的學(xué)習(xí)與用法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。