1.python實(shí)現(xiàn)文件夾遍歷
python 中os.path模塊用于操作文件或文件夾
os.path.exists(path) 判斷文件路徑是否存在
dir = "c:\windows"
if os.path.exists(dir) :
print "dir exists"
else :
print "no exists"
os.path.isfile(path) 判斷path是否是文件
dir = "c:\windows\system32\cmd.exe"
if os.path.isfile(dir) :
print "file exists"
else :
print "no exists"
os.path.getsize(path) 獲取path文件的大小
size = os.path.getsize(dir)
print size/1024
os.path.walk(path) 遍歷path蚣旱,返回一個(gè)三元組(dirpath, dirnames, filenames). dirpath表示遍歷到的路徑, dirnames表示該路徑下的子目錄名,是一個(gè)列表, filesnames表示該路徑下的文件名戴陡,也是一個(gè)列表. 例如: 當(dāng)遍歷到c:\windows時(shí)塞绿,dirpath="c:\windows", dirnames是這個(gè)路徑下所有子目錄名的列表,dirnames是這個(gè)路徑下所有文件名的列表
for (root, dirs, files) in os.walk("C:\windows"): 列出windows目錄下的所有文件和文件名
for filename in files:
print os.path.join(root,filename)
for dirc in dirs:
print os.path.join(root,dirc)
問題 1 獲取給定文件夾的大小?
要遍歷文件的大小恤批,只需要遍歷文件內(nèi)的所有文件异吻,然后將所有文件夾的大小加起來
def getDirSzie(dir) :
for (root,dirs,files) in os.walk(dir,False) :
Size = 0
for filename in files :
Size += os.path.getsize(os.path.join(root,filename))
print root,Size/1024
問題 2 遍歷一個(gè)文件夾的子目錄,不遍歷子目錄的字目錄喜庞?
os.listdir(path) 函數(shù)列出指定目錄下的文件和文件夾
dir = 'c:/windows'
if os.path.exists(dir):
dirs = os.listdir(dir)
for dirc in dirs:
print dirc
else :
print "dir not exists"
問題3 刪除指定目錄下空的目錄
for (root, dirs, files) in os.walk(path) :
for item in dirs :
dir = os.path.join(root, item)
try :
print dir
os.rmdir(dir)
except :
pass
問題4 修改指定目錄下所有文件的文件后綴
for (root,dirs,files) in os.walk(path) :
for item in files :
d = os.path.join(root, item)
name = d + ".eml"
os.rename(d, name)
2.python遍歷文件夾下的文件
在讀文件的時(shí)候往往需要遍歷文件夾诀浪,python的os.path包含了很多文件、文件夾操作的方法延都。下面列出:
os.path.abspath(path) #返回絕對(duì)路徑
os.path.basename(path) #返回文件名
os.path.commonprefix(list) #返回多個(gè)路徑中雷猪,所有path共有的最長(zhǎng)的路徑。
os.path.dirname(path) #返回文件路徑
os.path.exists(path) #路徑存在則返回True,路徑損壞返回False
os.path.lexists #路徑存在則返回True,路徑損壞也返回True
os.path.expanduser(path) #把path中包含的"~"和"~user"轉(zhuǎn)換成用戶目錄
os.path.expandvars(path) #根據(jù)環(huán)境變量的值替換path中包含的”$name”和”${name}”
os.path.getatime(path) #返回最后一次進(jìn)入此path的時(shí)間晰房。
os.path.getmtime(path) #返回在此path下最后一次修改的時(shí)間求摇。
os.path.getctime(path) #返回path的大小
os.path.getsize(path) #返回文件大小射沟,如果文件不存在就返回錯(cuò)誤
os.path.isabs(path) #判斷是否為絕對(duì)路徑
os.path.isfile(path) #判斷路徑是否為文件
os.path.isdir(path) #判斷路徑是否為目錄
os.path.islink(path) #判斷路徑是否為鏈接
os.path.ismount(path) #判斷路徑是否為掛載點(diǎn)()
os.path.join(path1[, path2[, ...]]) #把目錄和文件名合成一個(gè)路徑
os.path.normcase(path) #轉(zhuǎn)換path的大小寫和斜杠
os.path.normpath(path) #規(guī)范path字符串形式
os.path.realpath(path) #返回path的真實(shí)路徑
os.path.relpath(path[, start]) #從start開始計(jì)算相對(duì)路徑
os.path.samefile(path1, path2) #判斷目錄或文件是否相同
os.path.sameopenfile(fp1, fp2) #判斷fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) #判斷stat tuple stat1和stat2是否指向同一個(gè)文件
os.path.split(path) #把路徑分割成dirname和basename,返回一個(gè)元組
os.path.splitdrive(path) #一般用在windows下与境,返回驅(qū)動(dòng)器名和路徑組成的元組
os.path.splitext(path) #分割路徑验夯,返回路徑名和文件擴(kuò)展名的元組
os.path.splitunc(path) #把路徑分割為加載點(diǎn)與文件
os.path.walk(path, visit, arg) #遍歷path,進(jìn)入每個(gè)目錄都調(diào)用visit函數(shù)摔刁,visit函數(shù)必須有3個(gè)參數(shù)(arg, dirname, names)挥转,dirname表示當(dāng)前目錄的目錄名,names代表當(dāng)前目錄下的所有文件名共屈,args則為walk的第三個(gè)參數(shù)
os.path.supports_unicode_filenames #設(shè)置是否支持unicode路徑名
下面給出一種遍歷的實(shí)現(xiàn):
rootdir = 'F:\data'
list = os.listdir(rootdir) #列出文件夾下所有的目錄與文件
for i in range(0,len(list)):
path = os.path.join(rootdir,list[i])
if os.path.isfile(path):
#你想對(duì)文件的操作