文章目录
- 系列文章目录
- 功能说明
- 1 准备工作
- 2 第一版代码
- (1) 指定查找目录、查找文件类型
- (2) 新建空缓存列表,准备存放 文件列表。
- (3) 遍历
- (4) 判定文件类型,即 文件扩展名(后缀名)
- (5) 获取文件 路径,存入 缓存列表
- (6) 将列表写入 文件列表txt
- (7) 第一版完整代码
- 3 第二版代码
- (1) 用函数,打包文件名写入txt的过程。
- (2) 完整代码
- 4 后记
功能说明
日常工作中,有时候会统计一些文件列表,如对截图文件夹中的图片进行统计列表;
遍历某个盘符或目录下的指定格式文件列表。
本代码目标为:
- 1 指定目录;
- 2 指定文件类型;
- 3 导出文件列表txt。
1 准备工作
首先在D盘根目录下建立文件夹“临时”,在该文件夹内存放多个jpg格式图片文件,内容随意。
再该目录下新建文件夹,继续放入图片文件,实现目录嵌套。
2 第一版代码
第一版本的代码,主要实现导出列表的操作。
(1) 指定查找目录、查找文件类型
directory = r"D:\\临时" # 指定查找目录
file_type = ".jpg" # 指定查找文件类型
(2) 新建空缓存列表,准备存放 文件列表。
file_list = [] # 存储文件路径的列表
(3) 遍历
for root, dirs, files in os.walk(directory):
for file in files:
(4) 判定文件类型,即 文件扩展名(后缀名)
知识点: 关于文件扩展名(后缀名)
文件扩展名(Filename Extension)也称为文件的后缀名,是Windows操作系统用来标记文件类型的一种机制,或者符号。扩展名几乎是每个文件必不可少的一部分。如果一个文件没有扩展名,那么操作系统就无法辨别这个文件,不能区分它属于什么类型,从而无法判断到底使用哪款软件进行处理此文件。
文件名与扩展名由英文字符 点 “ . “ 分隔。如 xxx.doc 、xxx.jpg 、xxx.txt。
在Windows系统中,文件的扩展名需要“文件夹选项”中 取消勾选
python中截取文件扩展名的函数为 :endswith(file_type)
功能是获取文件的扩展名(包含 点 . )
防止字符大小写不一致,先行将文件名统一改为 小写字母。
函数为:str.lower() 转换为小写
str.upper() 转换为 大写。
if file.lower().endswith(file_type): # 判断文件是否为JPG文件
(5) 获取文件 路径,存入 缓存列表
file_path = os.path.join(root, file) # 获取文件的完整路径
file_list.append(file_path) # 将文件路径添加到列表中
(6) 将列表写入 文件列表txt
使用 with 语句 在进入和退出代码块时自动处理文件的打开和关闭,从而避免了手动管理文件资源的需要。这有助于确保文件在使用后能够被正确关闭,即使是在发生异常的情况下。
with open(os.path.join(directory, "文件列表.txt"), "w") as f:
for file_path in file_list:
f.write(file_path + "\n")
(7) 第一版完整代码
import os
directory = r"D:\\临时" # 指定查找目录
file_type = ".jpg" # 指定查找文件类型
# 遍历指定目录(包括子目录)下的 指定 格式文件
file_list = [] # 存储文件路径的列表
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(file_type): # 判断文件是否为JPG文件
file_path = os.path.join(root, file) # 获取文件的完整路径
file_list.append(file_path) # 将文件路径添加到列表中
# 将文件路径写入文件列表.txt
with open(os.path.join(directory, "文件列表.txt"), "w") as f:
for file_path in file_list:
f.write(file_path + "\n")
运行效果:
3 第二版代码
第一版的代码已经能够实现主要功能。后续主要优化代码运行效率。
(1) 用函数,打包文件名写入txt的过程。
# 函数用于优化打开文件的方式,减少资源占用
def write_file_list(file_list):
with open(os.path.join(directory, "文件列表.txt"), "w") as f:
for file_path in file_list:
f.write(os.path.relpath(file_path, directory) + "\n")
(2) 完整代码
import os
directory = r"d:\临时" # 指定查找目录
file_type = ".jpg" # 指定查找文件类型
# 函数用于优化打开文件的方式,减少资源占用
def write_file_list(file_list):
with open(os.path.join(directory, "文件列表.txt"), "w") as f:
for file_path in file_list:
f.write(os.path.relpath(file_path, directory) + "\n")
# 遍历指定目录(包括子目录)下的指定格式文件
file_list = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.lower().endswith(file_type): # 判断文件是否为JPG文件
file_path = os.path.join(root, file) # 获取文件的完整路径
file_list.append(file_path) # 将文件路径添加到列表中
# 将文件路径写入文件列表.txt,使用相对路径使文件更易于理解
write_file_list(file_list)
运行效果一样。
4 后记
使用windows的批处理,也可以实现该效果。
方法:新建txt文件,写入“dir *.jpg /b/s> list.txt”,然后修改后缀名为 “.bat”。
放在准备统计的目录里,右键——运行,即可生成文件列表。