如何遍历\历遍文件夹,获取所有的文件信息,修改文件名\复制文件\批量移动文件
Python os.walk() 方法的使用详解
os.walk() 的完整定义形式如下:
os.walk(top, topdown = True, onerror = None, followlinks = False)
params :
top:需要遍历目录的地址。
topdown 为True,则优先遍历top目录;topdown 为False , 优先遍历top的子目录(默认为开启)。
onerror 需要一个 callable 的对象,当walk需要异常时,会调用。
followlinks 如果为True,则会遍历目录下的快捷方式 (linux 下是 symbolic link)实际所指的目录(默认关闭)。
os.walk 的返回值是一个生成器(generator),也就是说我们需要用循环不断的遍历它(不可以直接print),来获得所有的内容。
每次遍历的对象都是返回的是一个三元元组(root,dirs,files)
root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录) files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
函数会自动改变root
的值使得遍历所有的子文件夹。所以返回的三元元组的个数为所有子文件夹(包括子子文件夹,子子子文件夹等等)加上1(根文件夹)
示例:
import os
base_dir = 'D:\Gold3' # 原文件存储在D盘中的Gold3文件夹下
new_dir = 'D:\Gold4\md_files'# 先新建一个文件夹,用于存放新的以.md为结尾文件
for root,dirs,files in os.walk(base_dir):
for file in files:
if file[-2::] == 'md':
file_name = ''.join(root.split('\\')[2:]) + '.md' # 对于符合条件的文件重命名文件名
new_path = os.path.join(new_dir, file_name)
with open(os.path.join(root,file), mode= 'rb') as f : # 读取原文件
content = f.read()
with open(new_path,mode = 'wb') as n : # 写入新文件
n.write(content)
n.flush() # 保存
分类:
Python Basic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具