Python os模塊及用法

os 模塊代表了程序所在的操作系統,主要用于獲取程序運行所在操作系統的相關信息。

在 Python 的交互式解釋器中先導入 os 模塊,然后輸入 os.__all__ 命令(__all__ 變量代表了該模塊開放的公開接口),即可看到該模塊所包含的全部屬性和函數。

此處僅介紹 os 模塊中常用的屬性和函數:

os.name:返回導入依賴模塊的操作系統名稱,通常可返回 'posix'、'nt'、 'java' 等值其中之一。

os.environ:返回在當前系統上所有環境變量組成的字典。

os.fsencode(filename):該函數對類路徑(path-like)的文件名進行編碼。

os.fsdecode(filename):該函數對類路徑(path-like)的文件名進行解碼。

os.PathLike:這是一個類,代表一個類路徑(path-like)對象。

os.getenv(key, default=None):獲取指定環境變量的值。

os.getlogin():返回當前系統的登錄用戶名。與該函數對應的還有 os.getuid()、os.getgroups()、os.getgid() 等函數,用于獲取用戶 ID、用戶組、組 ID 等,這些函數通常只在 UNIX 系統上有效。

os.getpid():獲取當前進程 ID。

os.getppid():獲取當前進程的父進程 ID。

os.putenv(key, value):該函數用于設置環境變量。

os.cpu_count():返回當前系統的 CPU 數量。

os.sep:返回路徑分隔符。

os.pathsep:返回當前系統上多條路徑之間的分隔符。一般在 Windows 系統上多條路徑之間的分隔符是英文分號(;);在 UNIX 及類 UNIX 系統(如 Linux、Mac os X)上多條路徑之間的分隔符是英文冒號(:)。

os.linesep:返回當前系統的換行符。一般在 Windows 系統上換行符是“\r\n”:在 UNIX 系統上換行符是“\n”;在 Mac os X 系統上換行符是“\r”。

os.urandom(size):返回適合作為加密使用的、最多由 N 個字節組成的 bytes 對象。該函數通過操作系統特定的隨機性來源返回隨機字節,該隨機字節通常是不可預測的,因此適用于絕大部分加密場景。

下面程序示范了 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))

運行上面程序,可以看到如下輸出結果:

nt
None
yeeku
9904
12036
8
\
;b'\x12\x1e\xcf'

從上面的輸出結果可以看出,在 Windows 系統上 Python 導入依賴模塊的操作系統名稱為“nt”;當前系統的登錄用戶名是“yeeku”:當前進程 ID 為“9904”;當前進程的父進程 ID 為“12036”;當前系統上有 8 個 CPU;當前系統(Windows)的路徑分隔符是“\”;當前系統(Windows)上多條路徑之間的分隔符是分號(;);但在當前系統(Windows)上換行符不能明顯看到,這是因為當在控制臺輸出“\r\n” 時才會產生兩個空行。

此外,在 os 模塊下還包含大量操作文件和目錄的功能函數,本教程將會在后續章節專門介紹這些功能函數。

在 os 模塊下還包含各種進程管理函數,它們可用于啟動新進程、中止己有進程等。在 os 模塊下與進程管理相關的函數如下:

os.abort():生成一個 SIGABRT 信號給當前進程。在 UNIX 系統上,默認行為是生成內核轉儲;在 Windows 系統上,進程立即返回退出代碼 3。

os.execl(path, arg0, arg1, ...):該函數還有一系列功能類似的函數,比如 os.execle()、os.execlp() 等,這些函數都是使用參數列表 arg0, arg1,...來執行 path 所代表的執行文件的。

os.forkpty():fork一個子進程。

os.kill(pid, sig):將 sig 信號發送到 pid 對應的過程,用于結束該進程。

os.killpg(pgid, sig):將 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() 函數來運行程序時,新程序所在的進程會替代原有的進程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/207510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207510.shtml
英文地址,請注明出處:http://en.pswp.cn/news/207510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux DataEase數據可視化分析工具本地部署與遠程訪問

文章目錄 前言1. 安裝DataEase2. 本地訪問測試3. 安裝 cpolar內網穿透軟件4. 配置DataEase公網訪問地址5. 公網遠程訪問Data Ease6. 固定Data Ease公網地址 前言 DataEase 是開源的數據可視化分析工具,幫助用戶快速分析數據并洞察業務趨勢,從而實現業務…

ExecutorService介紹

參考:https://blog.csdn.net/fwt336/article/details/81530581 前言 在開發中為了提高系統的響應速度和處理能力會使用到多線程,但線程的創建和釋放,需要占用不小的內存和資源。如果每次需要使用線程時,都new 一個Thread的話&…

【LeetCode】2723. 兩個 Promise 對象相加

兩個 Promise 對象相加 題目題解 題目 給定兩個 promise 對象 promise1 和 promise2,返回一個新的 promise。promise1 和 promise2 都會被解析為一個數字。返回的 Promise 應該解析為這兩個數字的和。 示例 1: 輸入: promise1 new Promise…

geoserver根據屬性字段值設置不同的顏色

<?xml version"1.0" encoding"UTF-8"?> <StyledLayerDescriptor xmlns"http://www.opengis.net/sld" xmlns:xlink"http://www.w3.org/1999/xlink" xmlns:ogc"http://www.opengis.net/ogc" xmlns:xsi"http:/…

中國聚羥基脂肪酸酯(PHA)市場評估與投資戰略報告(2024版)

內容簡介&#xff1a; PHA英文名稱為 Polyhydroxyalkanoates&#xff0c;是近20多年迅速發展起來的&#xff0c;很多天然原料合成的一種聚酯。PHA是生物基生物降解材料&#xff0c;具有良好的生物相容性和可加工性。防止水汽的穿透是保鮮包裝中的重要指標&#xff0c;PHA 有良…

os.walk()遍歷文件夾/文件

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

P3 Qt 控件 —— pushButton

前言 &#x1f3ac; 個人主頁&#xff1a;ChenPi &#x1f43b;推薦專欄1: 《C_ChenPi的博客-CSDN博客》??? &#x1f525; 推薦專欄2: 《Linux C應用編程&#xff08;概念類&#xff09;_ChenPi的博客-CSDN博客》??? &#x1f33a;本篇簡介 &#xff1a;這一章我們學一…

Python evalml 庫:自動化機器學習的新前景

更多資料獲取 &#x1f4da; 個人網站&#xff1a;ipengtao.com 在機器學習領域&#xff0c;evalml 庫嶄露頭角&#xff0c;為開發者提供了一個強大而高效的自動化機器學習框架。本文將深入介紹 evalml 的核心功能、使用方法以及在實際項目中的應用。通過詳實的示例代碼&#…

前端高頻面試題大全-面試必看

內容較多&#xff0c;建議查看目錄&#xff0c;方便食用 高頻 React和Vue的區別 通常解法&#xff1a;vue是采用指令結合vue-loader實現構件用戶界面的漸進式框架&#xff0c;React是采用JSX構件用戶界面的組件化開發 詳細解法&#xff1a;在渲染界面的時候DOM操作是昂貴的&…

【Linux系統編程】項目自動化構建工具make/Makefile

介紹&#xff1a; make和Makefile是用于編譯和構建C/C程序的工具和文件。Makefile是一個文本文件&#xff0c;其中包含了編譯和構建程序所需的規則和指令。它告訴make工具如何根據源代碼文件生成可執行文件&#xff0c;里面保存的是依賴關系和依賴方法。make是一個命令行工具&a…

智匯恒星科技|控樂屋.全宅智能冠軍代言來啦, 智慧家居千億藍海

隨著5G、大數據、云計算、物聯網等技術的發展&#xff0c;智能化正覆蓋人們生活的方方面面&#xff0c;全屋智能的出現為“一鍵式”智能家居生活享受提供無限可能。近年來智能家居行業總體規模增長迅速&#xff0c;數據顯示&#xff0c;2022年中國智能家居行業市場規模約為6200…

Java內部類

文章目錄 什么是 Java 中的內部類&#xff1f;有哪些類型的內部類&#xff1f;匿名內部類局部內部類&#xff08;定義在方法中的類&#xff09;局部內部類靜態內部類 Java 類中不僅可以定義變量和方法&#xff0c;還可以定義類&#xff0c;這樣定義在類內部的類就被稱為內部類。…

Java期末復習題之封裝

點擊返回標題->23年Java期末復習-CSDN博客 第1題. 定義一個類Person,定義name和age私有屬性&#xff0c;定義有參的構造方法對name和age進行初始化。在測試類中創建該類的2個對象&#xff0c;姓名、年齡分別為lili、19和lucy、20&#xff0c;在屏幕打印出2個對象的姓名和年齡…

2024年江蘇省職業院校技能大賽信息安全管理與評估 理論題(樣卷)

2024年江蘇省職業院校技能大賽信息安全管理與評估 理論題&#xff08;樣卷&#xff09; 理論技能與職業素養&#xff08;100分&#xff09; 2024年江蘇省職業院校技能大賽&#xff08;高職學生組&#xff09; 模塊三“信息安全管理與評估”理論技能 【注意事項】 Geek極安云…

Qt對excel操作

Qt庫中自帶對excel操作的模塊QAxObject&#xff0c;QAxObject是Qt提供給程序員從代碼中訪問Office的對象類&#xff0c;其本質上是一個面向微軟操作系統的COM接口。 QAxObject將所有Office的工作簿、表格、文檔等都作為其子對象&#xff0c;程序員通過調用querySubObject()這個…

vue-quill-editor上傳圖片base64轉化為img標簽

vue-quill-editor傳圖片的話默認把圖片轉成了base64&#xff0c;會導致我們的參數特別大&#xff0c;不好渲染 基于vue-quill-editor重寫一個quill-editor組件 <template><div><quilleditorv-model"content"ref"myTextEditor":options&qu…

在線圖片轉Base64圖片的方法

html版(不包含跨域解決,輸入在線圖片地址即可轉換) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

Cisco 思科路由交換網絡設備 安全基線 安全加固操作

目錄 賬號管理、認證授權 本機認證和授權ELK-Cisco-01-01-01 設置特權口令 ELK-Cisco-01-02-01 ELK-Cisco-01-02-02 ???????登錄要求 ELK-Cisco-01-03-01 ???????ELK-Cisco-01-03-02 ELK-Cisco-01-03-03 日志配置 ELK-Cisco-02-01-01 通信協議 ELK-Cisco-…

軟考高級信息系統項目管理師經驗分享

考了三次終于考過了。 第一次&#xff0c;沒準備&#xff0c;打醬油。 第二次&#xff0c;不舍得花錢&#xff0c;自己復習&#xff0c;結果教材改版了都不知道。 第三次&#xff0c;改機考了。 總結一下這三次的經驗&#xff1a; 一、不是學霸型的一定要報班 報班的優點&…

實時動作識別學習筆記

目錄 yowo v2 yowof 判斷是在干什么,不能獲取細節信息 yowo v2 https://github.com/yjh0410/YOWOv2/blob/master/README_CN.md ModelClipmAPFPSweightYOWOv2-Nano1612.640ckptYOWOv2-Tiny