如何遍历\历遍文件夹,获取所有的文件信息,修改文件名\复制文件\批量移动文件

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() # 保存
 

 

 

posted @   MrSphere  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示