python下遍歷某個路徑所有文件是很常用的事,一直對其有所困擾,那么python如何遍歷文件夾呢?一起來了解下吧:
python如何遍歷文件夾
方法一 : 利用函數(shù) os.walk()
os.walk() 會返回三元元組 (dirpath, dirnames, filenames)
dirpath : 根路徑 (字符串)
dirnames : 路徑下的所有目錄名 (列表)
filenames : 路徑下的所有非目錄文件名 (列表)
其中目錄名和文件名都是沒有加上根路徑的,所以需要完整路徑時需要將目錄名或文件名與根路徑連接起來。
示例 :
import os
root = "C:\\dir"
for dirpath, dirnames, filenames in os.walk(root):
for filepath in filenames:
print os.path.join(dirpath, filepath)
方法二 : 利用函數(shù) os.listdir(), os.path.isdir(), os.path.isfile()
os.listdir() 可以列出路徑下所有文件和目錄名,但是不包括當前目錄., 上級目錄.. 以及子目錄下的文件.
os.path.isfile() 和 os.path.isdir() 判斷當前路徑是否為文件或目錄
示例 :
import os
def listDir(rootDir):
for filename in os.listdir(rootDir):
pathname = os.path.join(rootDir, filename)
if (os.path.isfile(filename)):
print pathname
else:
listDir(pathname)
python如何實現(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,返回一個三元組(dirpath, dirnames, filenames). dirpath表示遍歷到的路徑, dirnames表示該路徑下的子目錄名,是一個列表, filesnames表示該路徑下的文件名,也是一個列表. 例如: 當遍歷到c:\windows時,dirpath="c:\windows", dirnames是這個路徑下所有子目錄名的列表,filenames是這個路徑下所有文件名的列表
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 遍歷一個文件夾的子目錄,不遍歷子目錄的字目錄?
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)
python怎樣遍歷文件夾
一、os.walk()
os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一個三元tupple(dirpath, dirnames, filenames),
第一個為起始路徑,第二個為起始路徑下的文件夾,第三個是起始路徑下的文件。
dirpath 是一個string,代表目錄的路徑,
dirnames 是一個list,包含了dirpath下所有子目錄的名字。
filenames 是一個list,包含了非目錄文件的名字。
這些名字不包含路徑信息,如果需要得到全路徑,需要使用os.path.join(dirpath, name)
二、枚舉文件夾下所有文件
import os
# 枚舉dirPath目錄下的所有文件
def main(dirname):
# begin
for root, dirs, files in os.walk(dirname):
print(root)
print(dirs)
print(files)
for dir in dirs:
print(os.path.join(root, dir))
for file in files:
print(os.path.join(root, file))
print('----------------')
if __name__ == '__main__':
main(r'G:\ftp\home\bigberg')
三、遍歷文件夾獲取大小
def get_used_size(dirname):
"""
遍歷文件夾獲取文件大小
"""
size = 0
for dir_path, dirs, files in os.walk(dirname):
# size += sum([os.path.getsize(os.sep.join([dir_path, name])) for name in files])
for name in files:
size += os.path.getsize(os.sep.join([dir_path, name]))
return size
Python如何循環(huán)遍歷文件
python中打開文件需要使用內(nèi)置函數(shù)open
格式:
open(name[,mode[,buffering]])
啟動mode和buffering 是可選的,默認情況下mode是r
mode:
r:以讀方式打開
w:以寫方式打開 (文件不存在會創(chuàng)建,存在的話,會清空文件,很危險)
a:以追加的方式打開
r+:以讀寫模式打開
w+:以讀寫模式打開
a+:以讀寫模式打開
rb:以二進制讀模式打開(特殊文件需要用文本模式傳輸?shù)脑,建議使用b)
wb:以二進制寫模式打開
ab:以二進制追加模式打開
方法:
fd = open('/tmp/test.txt','r')
以讀模式打開,可以利用一個變量去接收,注意這個變量是一個文件對象
fd.close()
關(guān)閉打開的文件,(修改等操作,只有關(guān)閉了文件,才會生效)
fd.write("123")
寫入(需要寫模式),注意寫入的內(nèi)容必須是一個字符串。
fd.read(int)
一次性讀取文件所有內(nèi)容,那么再次執(zhí)行read()方法的時候,指針在末尾,所以就為空了。如果指定了int,那么就只讀取int個字符
fd.readline()
一行一行讀取,返回字符串,當指針到文件默認,返回空
fd.readlines()
一次讀取所有行,并把每一個行當成一個元素,存儲在序列中(如果文件很大,那么非常占內(nèi)存)
fd.next()
第一讀取一行,知道行尾,到行尾的時候會報錯
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計算機營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論