Python os模塊及用法

os 模塊代表了程序所在的操作系統(tǒng),主要用于獲取程序運(yùn)行所在操作系統(tǒng)的相關(guān)信息寻咒。

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

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

os.name:返回導(dǎo)入依賴模塊的操作系統(tǒng)名稱畅厢,通撤肓。可返回 'posix'、'nt'、 'java' 等值其中之一系羞。

os.environ:返回在當(dāng)前系統(tǒng)上所有環(huán)境變量組成的字典郭计。

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

os.fsdecode(filename):該函數(shù)對(duì)類路徑(path-like)的文件名進(jìn)行解碼椒振。

os.PathLike:這是一個(gè)類昭伸,代表一個(gè)類路徑(path-like)對(duì)象。

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

os.getlogin():返回當(dāng)前系統(tǒng)的登錄用戶名庐杨。與該函數(shù)對(duì)應(yīng)的還有 os.getuid()、os.getgroups()夹供、os.getgid() 等函數(shù)灵份,用于獲取用戶 ID、用戶組哮洽、組 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 及類 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ù)通過操作系統(tǒng)特定的隨機(jī)性來源返回隨機(jī)字節(jié)职车,該隨機(jī)字節(jié)通常是不可預(yù)測(cè)的瘫俊,因此適用于絕大部分加密場(chǎng)景。

下面程序示范了 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)上多條路徑之間的分隔符是分號(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é)專門介紹這些功能函數(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ù)還有一系列功能類似的函數(shù)戏蔑,比如 os.execle()暴区、os.execlp() 等,這些函數(shù)都是使用參數(shù)列表 arg0, arg1,...來執(zhí)行 path 所代表的執(zhí)行文件的辛臊。

os.forkpty():fork一個(gè)子進(jìn)程仙粱。

os.kill(pid, sig):將 sig 信號(hào)發(fā)送到 pid 對(duì)應(yīng)的過程,用于結(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 命令打開讀寫管道(當(dāng) mode 為 r 時(shí)為只讀管道,當(dāng) mode 為 rw 時(shí)為讀寫管道)刃唤,buffering 緩沖參數(shù)與內(nèi)置的 open() 函數(shù)有相同的含義隔心。該函數(shù)返回的文件對(duì)象用于讀寫字符串,而不是字節(jié)尚胞。

os.spawnl(mode, path, ...):該函數(shù)還有一系列功能類似的函數(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í)行打開(open)操作拜轨。operation 參數(shù)必須是有效的命令行操作項(xiàng)目,比如 open(打開)允青、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打開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)程會(huì)替代原有的進(jìn)程。

Python os模塊及用法-Python學(xué)習(xí)網(wǎng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谤牡,一起剝皮案震驚了整個(gè)濱河市副硅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翅萤,老刑警劉巖恐疲,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異套么,居然都是意外死亡培己,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門胚泌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來省咨,“玉大人,你說我怎么就攤上這事玷室×闳兀” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵穷缤,是天一觀的道長(zhǎng)敌蜂。 經(jīng)常有香客問我,道長(zhǎng)津肛,這世上最難降的妖魔是什么章喉? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮身坐,結(jié)果婚禮上秸脱,老公的妹妹穿的比我還像新娘。我一直安慰自己掀亥,他們只是感情好撞反,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布妥色。 她就那樣靜靜地躺著搪花,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撮竿,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天吮便,我揣著相機(jī)與錄音,去河邊找鬼幢踏。 笑死髓需,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的房蝉。 我是一名探鬼主播僚匆,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搭幻!你這毒婦竟也來了咧擂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檀蹋,失蹤者是張志新(化名)和其女友劉穎松申,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俯逾,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贸桶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桌肴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皇筛。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坠七,靈堂內(nèi)的尸體忽然破棺而出设联,到底是詐尸還是另有隱情,我是刑警寧澤灼捂,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布离例,位于F島的核電站,受9級(jí)特大地震影響悉稠,放射性物質(zhì)發(fā)生泄漏宫蛆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一的猛、第九天 我趴在偏房一處隱蔽的房頂上張望耀盗。 院中可真熱鬧,春花似錦卦尊、人聲如沸叛拷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忿薇。三九已至裙椭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間署浩,已是汗流浹背揉燃。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筋栋,地道東北人炊汤。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像弊攘,于是被迫代替她去往敵國(guó)和親抢腐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一襟交、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,743評(píng)論 0 8
  • 常用模塊 認(rèn)識(shí)模塊 什么是模塊 什么是模塊婿着? 常見的場(chǎng)景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件授瘦,文...
    go以恒閱讀 1,943評(píng)論 0 6
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,370評(píng)論 0 5
  • 可用性及穩(wěn)定性保障主要是針對(duì)我們的大促活動(dòng)而言,如何在承接億級(jí)流量的同時(shí)保證系統(tǒng)的可用及穩(wěn)定竟宋。這樣的保障不僅是在技...
    adam_go閱讀 1,277評(píng)論 1 1