python標(biāo)準(zhǔn)庫簡介(二) os模塊

在學(xué)習(xí)編程過程中,我一直遵循一個簡單的思路,更好的寫代碼,寫出更好的代碼,python作為我的主要開發(fā)工具,有必要深入了解下python標(biāo)準(zhǔn)庫.

  • 更好的利用標(biāo)準(zhǔn)庫中已經(jīng)有的輪子,提升自己的開發(fā)效率.
  • 標(biāo)準(zhǔn)庫的源碼一定是最pythonic,學(xué)習(xí)其pythonic的編碼風(fēng)格.

該系列文章全部基于python3.5,交互式環(huán)境全都基于Ipython 5.1.0

文章采用標(biāo)準(zhǔn)庫常用功能介紹,源碼分析(挑選重要的),應(yīng)用場景介紹(工程實踐較少,見諒^^)為組織方式.

os模塊

os模塊是python與操作系統(tǒng)交互的主要模塊,os模塊可以彌補(bǔ)操作系統(tǒng)之間差異帶來的編程方面的不同.工作中使用的主要場景就是在文件路徑描述,windows和linux 之間文件路徑的不同.

操作系統(tǒng)相關(guān)

os.sep操作系統(tǒng)特定文件路徑分隔符

In [2]: os.sep
Out[2]: '/'

os.name 可移植操作系統(tǒng)接口標(biāo)識,是操作系統(tǒng)API一系列相互關(guān)聯(lián)標(biāo)準(zhǔn)的總稱,windows是nt Linux/Unix是posix.

In [3]:  os.name
Out[3]: 'posix'

os.defpath 可執(zhí)行文件的默認(rèn)搜索路徑

In [9]: os.defpath
Out[9]: ':/bin:/usr/bin'

os.curdir 當(dāng)前路徑的簡稱

In [10]: os.curdir
Out[10]: '.'

os.pardir 父級路徑的簡稱

In [11]: os.pardir
Out[11]: '..'

os.uname() 獲取當(dāng)前操作系統(tǒng)的詳細(xì)信息

In [12]: os.uname()
Out[12]: posix.uname_result(sysname='Linux', nodename='chao', release='4.10.0-42-generic', version='#46-Ubuntu SMP Mon Dec 4 14:38:01 UTC 2017', machine='x86_64')

和環(huán)境變量相關(guān)的

os.environ 獲取當(dāng)前環(huán)境變量

In [13]: os.environ
Out[13]: environ({'LC_PAPER': 'zh_CN.UTF-8', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh',...})

獲取某個環(huán)境的具體值

In [14]: os.environ.get('LC_PAPER')
Out[14]: 'zh_CN.UTF-8'
In [16]: os.getenv('LC_PAPER')
Out[16]: 'zh_CN.UTF-8'

設(shè)置環(huán)境變量

In [17]: os.environ['hello']='world'
In [19]: os.getenv('hello')
Out[19]: 'world'

與文件夾相關(guān)

os.getcwd() 獲取當(dāng)前工作路徑

In [157]: os.getcwd()
Out[157]: '/home/zhangwenchao/os_test'

os.mkdir創(chuàng)建文件夾

In [119]: os.mkdir('./what')

In [120]: ls
f1  f2  hello/  what/

os.rmdir刪除文件夾

In [131]: ls
f1  f2  hello/  what/

In [132]: os.rmdir('hello')

In [133]: ls
f1  f2  what/

os.listdir 以列表的形式展現(xiàn)當(dāng)前目錄或指定目錄下的文件

In [130]: os.listdir()
Out[130]: ['hello', 'f1', 'f2', 'what']

In [131]: ls
f1  f2  hello/  what/

os.rename 重命名文件

In [148]: ls
f1  f2  hello/  what/

In [149]: os.rename('./hello','world')

In [150]: ls
f1  f2  what/  world/

os.remove 刪除文件

In [150]: ls
f1  f2  what/  world/

In [151]: os.remove('f1')

In [152]: ls
f2  what/  world/

有人會問,刪除文件是這樣,那么新建文件呢,python 新建文件是通過open函數(shù)實現(xiàn)的

In [153]: f3 = open('./f3','w')

In [154]: ls
f2  f3  what/  world/

In [155]: f3.close()

In [156]: ls
f2  f3  what/  world/

os.path 和路徑相關(guān)的

獲取某個路徑的絕對路徑

In [27]: os.path.abspath(path='.')
Out[27]: '/home/zhangwenchao/os_test'

獲取路徑的基本名稱

In [31]: os.path.basename('/home/zhangwenchao')
Out[31]: 'zhangwenchao'

獲得路徑列表中共同路徑最長的那一部分

In [37]: os.path.commonpath(['/home/zhangwenchao','/home/zhangwenchao/chaozi','/home/zhangwenchao/hello'])
Out[37]: '/home/zhangwenchao'

獲得路徑的起始目錄

In [38]: os.path.dirname('/home/zhangwenchao')
Out[38]: '/home'

看路徑是否在系統(tǒng)中存在

In [40]: os.path.exists('/home/zhangwenchao')
Out[40]: True

In [41]: os.path.exists('/home/zhangwenchao/haha')
Out[41]: False

翻譯家目錄的絕對路徑

In [49]: os.path.expanduser(path='~')
Out[49]: '/home/zhangwenchao'

將路徑中的'~'換成家目錄的絕對路徑

In [55]: os.path.expanduser('~/os_test')
Out[55]: '/home/zhangwenchao/os_test'

查看最后一次進(jìn)入該目錄的時間

In [58]: os.path.getatime('.')
Out[58]: 1522289333.369126

查看最后一次修改該目錄的時間

In [60]: os.path.getmtime('.')
Out[60]: 1522289329.4610949

查看該路徑的大小

In [61]: os.path.getsize('/home/zhangwenchao/os_test')
Out[61]: 4096

查看該路徑是文件還是文件夾

In [62]: os.path.isdir('/home/zhangwenchao/os_test')
Out[62]: True

In [63]: os.path.isfile('/home/zhangwenchao/os_test')
Out[63]: False

路徑拼接,根據(jù)不同操作系統(tǒng)采用不同的文件拼接符,比如我現(xiàn)在用的是linux系統(tǒng)就會采用'/'拼接

In [64]: os.path.join('/home','hello','world')
Out[64]: '/home/hello/world'

規(guī)范系統(tǒng)的文件路徑形式

In [70]: os.path.normpath('c:\home\ha')
Out[70]: 'c:\\home\\ha'
In [72]: os.path.normpath('/home//ha')
Out[72]: '/home/ha'

從某個路徑開始計算相對路徑,比如,當(dāng)前位于/home/zhangwenchao/os_test

In [79]: os.path.relpath('/home')
Out[79]: '../..'

In [80]: os.path.relpath('/home/work')
Out[80]: '../../work'

In [81]: os.path.relpath('/home/work','/home')
Out[81]: 'work'

In [82]: os.path.relpath('/home/work','/')
Out[82]: 'home/work'

os.path.split(path) 把路徑分割成dirname和basename,返回一個元組

In [84]: os.path.split('/home/work/hello')
Out[84]: ('/home/work', 'hello')

分割文件的擴(kuò)展名,可以用來獲取文件的擴(kuò)展名

In [85]: os.path.splitext('/home/work/hello.txt')
Out[85]: ('/home/work/hello', '.txt')

In [87]: os.path.splitext('/home/work/hello-txt')
Out[87]: ('/home/work/hello-txt', '')

os.path.samefile(path1, path2) 判斷目錄或文件是否相同

In [88]: %mkdir hello

In [89]: ls
hello/

In [90]: os.path.samefile('./hello','.')
Out[90]: False

In [91]: os.path.samefile('./hello','./hello')
Out[91]: True
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浪谴,一起剝皮案震驚了整個濱河市救军,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖嘁捷,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡斥铺,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門坛善,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晾蜘,“玉大人,你說我怎么就攤上這事眠屎√藿唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵改衩,是天一觀的道長岖常。 經(jīng)常有香客問我,道長燎字,這世上最難降的妖魔是什么腥椒? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮候衍,結(jié)果婚禮上笼蛛,老公的妹妹穿的比我還像新娘。我一直安慰自己蛉鹿,他們只是感情好滨砍,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妖异,像睡著了一般惋戏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上他膳,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天响逢,我揣著相機(jī)與錄音,去河邊找鬼棕孙。 笑死舔亭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟀俊。 我是一名探鬼主播钦铺,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼肢预!你這毒婦竟也來了矛洞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤烫映,失蹤者是張志新(化名)和其女友劉穎沼本,沒想到半個月后噩峦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡抽兆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年壕探,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊丛。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞧筛,靈堂內(nèi)的尸體忽然破棺而出厉熟,到底是詐尸還是另有隱情,我是刑警寧澤较幌,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布揍瑟,位于F島的核電站,受9級特大地震影響乍炉,放射性物質(zhì)發(fā)生泄漏绢片。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一岛琼、第九天 我趴在偏房一處隱蔽的房頂上張望底循。 院中可真熱鬧,春花似錦槐瑞、人聲如沸熙涤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祠挫。三九已至,卻和暖如春悼沿,著一層夾襖步出監(jiān)牢的瞬間等舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工糟趾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留慌植,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓拉讯,卻偏偏與公主長得像涤浇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子魔慷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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

  • Pythos中調(diào)用操作系統(tǒng)的模塊只锭,提供對操作系統(tǒng)進(jìn)行調(diào)用的接口 API方法 os.getcwd() 獲取當(dāng)前工作目...
    So_ProbuING閱讀 2,269評論 0 4
  • 〇、前言 本文共108張圖院尔,流量黨請慎重蜻展! 歷時1個半月喉誊,我把自己學(xué)習(xí)Python基礎(chǔ)知識的框架詳細(xì)梳理了一遍纵顾。 ...
    Raxxie閱讀 18,928評論 17 410
  • os模塊簡介: OS模塊是Python標(biāo)準(zhǔn)庫中的一個用于訪問操作系統(tǒng)功能的模塊伍茄,OS模塊提供了一種可移...
    翟振光閱讀 4,984評論 0 6
  • os模塊 os模塊的作用: os施逾,語義為操作系統(tǒng),所以肯定就是操作系統(tǒng)相關(guān)的功能了汉额,可以處理文件和目錄這些我們?nèi)粘?..
    Irlans閱讀 603評論 0 2
  • 當(dāng)他說曹仗,他還有前女友的陰影時,你終于受不了了蠕搜。 拉黑怎茫,刪好友妓灌,刪朋友圈的動態(tài)轨蛤,你終于決定要把他從生活中抹去了虫埂。 可...
    VOICE_min閱讀 424評論 3 1