首页> python> python编程基础> 文章内容
python如何遍历文件夹
来源 :中华考试网 2020-10-31
中python下遍历某个路径所有文件是很常用的事,一直对其有所困扰,那么python如何遍历文件夹呢?一起来了解下吧:
python如何遍历文件夹
方法一 : 利用函数 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)
方法二 : 利用函数 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如何实现文件夹遍历
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 获取给定文件夹的大小?
要遍历文件的大小,只需要遍历文件内的所有文件,然后将所有文件夹的大小加起来
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) 函数列出指定目录下的文件和文件夹
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 修改指定目录下所有文件的文件后缀
python课程免费试听预约
- 地区:
- 北京
- 天津
- 上海
- 江苏
- 浙江
- 山东
- 江西
- 安徽
- 广东
- 广西
- 海南
- 辽宁
- 吉林
- 黑龙江
- 内蒙古
- 山西
- 福建
- 河南
- 河北
- 湖南
- 湖北
- 四川
- 重庆
- 云南
- 贵州
- 新疆
- 西藏
- 陕西
- 青海
- 宁夏
- 甘肃
- 姓名:
- 手机:
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如何循环遍历文件
python中打开文件需要使用内置函数open
格式:
open(name[,mode[,buffering]])
启动mode和buffering 是可选的,默认情况下mode是r
mode:
r:以读方式打开
w:以写方式打开 (文件不存在会创建,存在的话,会清空文件,很危险)
a:以追加的方式打开
r+:以读写模式打开
w+:以读写模式打开
a+:以读写模式打开
rb:以二进制读模式打开(特殊文件需要用文本模式传输的话,建议使用b)
wb:以二进制写模式打开
ab:以二进制追加模式打开
方法:
fd = open('/tmp/test.txt','r')
以读模式打开,可以利用一个变量去接收,注意这个变量是一个文件对象
fd.close()
关闭打开的文件,(修改等操作,只有关闭了文件,才会生效)
fd.write("123")
写入(需要写模式),注意写入的内容必须是一个字符串。
fd.read(int)
一次性读取文件所有内容,那么再次执行read()方法的时候,指针在末尾,所以就为空了。如果指定了int,那么就只读取int个字符
fd.readline()
一行一行读取,返回字符串,当指针到文件默认,返回空
fd.readlines()
一次读取所有行,并把每一个行当成一个元素,存储在序列中(如果文件很大,那么非常占内存)
fd.next()
第一读取一行,知道行尾,到行尾的时候会报错