[Python] os 模塊

os.walk() 方法

os.walk() 方法用于通過在目錄樹種游走輸出在目錄中的文件名,向上或者向下。語法格式如下:

os.walk(top, topdown=True, onerror=None, followlinks=False)
# top -- 將要遍歷的目錄地址。根目錄下的每一個文件夾(包含它自己), 產(chǎn)生3-元組 (dirpath, dirnames, filenames)【文件夾路徑, 文件夾名字, 文件名】。
# topdown --可選,為True或者沒有指定, 一個目錄的的3-元組將比它的任何子文件夾的3-元組先產(chǎn)生 (目錄自上而下)。如果topdown為 False, 一個目錄的3-元組將比它的任何子文件夾的3-元組后產(chǎn)生 (目錄自下而上)。
# onerror -- 可選,是一個函數(shù); 它調(diào)用時有一個參數(shù), 一個OSError實例。報告這錯誤后,繼續(xù)walk,或者拋出exception終止walk。
# followlinks -- 設(shè)置為 true,則通過軟鏈接訪問目錄。

os.walk 的返回值是一個生成器(generator),也就是說我們需要不斷的遍歷它,來獲得所有的內(nèi)容。每次遍歷的對象都是返回的是一個三元組(root, dirs, files)

  • root 所指的是當(dāng)前正在遍歷的這個文件夾的本身的地址
  • dirs 是一個 list ,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄)
  • files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)
實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

執(zhí)行以上程序輸出結(jié)果為:

./.bash_logout
./amrood.tar.gz
./.emacs
./httpd.conf
./www.tar.gz
./mysql.tar.gz
./test.py
./.bashrc
./.bash_history
./.bash_profile
./tmp
./tmp/test.py

os.path

實例:
# -*- coding: UTF-8 -*-
import os
print os.path.abspath("d:\\new\\test.txt")  #返回絕對路徑
>>> d:\new\test.txt
print os.path.basename("d:\\new\\test.txt") #返回文件名
>>> test.txt
print os.path.dirname("d:\\new\\test.txt")  #返回文件路徑
>>> d:\new
print os.path.exists("d:\\new")
>>> True
print os.path.lexists("d:\\new")
>>> True
print os.path.expanduser("d:\\new\\text.txt")
>>> d:\new\text.txt
print os.path.getatime("d:\\new")   #最后訪問時間
>>> 1322235096.47
print os.path.getmtime("d:\\new")   #最后修改路徑時間
>>> 1322235096.47
print os.path.getctime("d:\\new")   #創(chuàng)建時間
>>> 1321610018.9
print os.path.getsize("d:\\new\\")  #獲取路徑的大小 字節(jié)為單位
>>> 16384
print os.path.isabs("d:\\")         #判斷是否為絕對路徑
>>> True
print os.path.isfile("d:\\new\\hello.txt")  #判斷路徑是否為文件
>>> True
print os.path.isdir("d:\\new")              #判斷路徑是否為目錄
>>> True
print os.path.islink("d:\\new\\hello.txt")  #判斷路徑是否為鏈接
>>> False
print os.path.join("d:\\new","hello.txt")   #把目錄和文件名合成一個路徑
>>> d:\new\hello.txt
print os.path.normcase("d:\\new\\hello.txt")#規(guī)范path字符串形式
>>> d:\new\hello.txt
print os.path.realpath("d:\\new\\hello.txt")#返回path的真實路徑
>>> hello.txt
print os.path.split("d:\\new\\hello.txt")   #分離文件名 返回元組
>>> ('d:\\new', 'hello.txt')
print os.path.splitdrive("d:\\new\\hello.txt")  #分離磁盤驅(qū)動器與路徑 返回元組
>>> ('d:', '\\new\\hello.txt')
print os.path.splitext("d:\\new\\hello.txt")    #分離擴(kuò)展名 返回元組
>>> ('d:\\new\\hello', '.txt')

os.stat() 方法

os.stat() 方法用于在給定的路徑上執(zhí)行一個系統(tǒng) stat 的調(diào)用。

os.stat(path)
# path--指定路徑
返回值:
  • st_mode: inode 保護(hù)模式
  • st_ino: inode 節(jié)點號。
  • st_dev: inode 駐留的設(shè)備。
  • st_nlink: inode 的鏈接數(shù)。
  • st_uid: 所有者的用戶ID。
  • st_gid: 所有者的組ID。
  • st_size: 普通文件以字節(jié)為單位的大小;包含等待某些特殊文件的數(shù)據(jù)。
  • st_atime: 上次訪問的時間。
  • st_mtime: 最后一次修改的時間。
  • st_ctime: 由操作系統(tǒng)報告的"ctime"。在某些系統(tǒng)上(如Unix)是最新的元數(shù)據(jù)更改的時間,在其它系統(tǒng)上(如Windows)是創(chuàng)建時間(詳細(xì)信息參見平臺的文檔)。
實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os, sys

# 顯示文件 "a2.py" 信息
statinfo = os.stat('a2.py')

print statinfo
"""
輸出:
posix.stat_result(st_mode=33188, st_ino=3940649674337682L, st_dev=277923425L, st
_nlink=1, st_uid=400, st_gid=401, st_size=335L, st_atime=1330498089, st_mtime=13
30498089, st_ctime=1330498089)
"""

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,480評論 2 379

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