找回密码
 会员注册
查看: 30|回复: 0

Python一文向您详细介绍遍历文件夹下所有文件

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71053
发表于 2024-9-5 19:59:16 | 显示全部楼层 |阅读模式
【Python】一文向您详细介绍【遍历文件夹下所有文件】 下滑查看解决方法🌈欢迎莅临我的个人主页👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇🎓博主简介:985高校的普通本硕,曾有幸发表过人工智能领域的中科院顶刊一作论文,熟练掌握PyTorch框架。🔧技术专长:在CV、NLP及多模态等领域有丰富的项目实战经验。已累计提供近千次定制化产品服务,助力用户少走弯路、提高效率,近一年好评率100%。📝博客风采:积极分享关于深度学习、PyTorch、Python相关的实用内容。已发表原创文章500余篇,代码分享次数逾六万次。💡服务项目:包括但不限于科研辅导、知识付费咨询以及为用户需求提供定制化解决方案。               🌵文章目录🌵📂一、遍历文件夹的初步探索📁二、区分文件和文件夹🔄三、递归遍历子文件夹🔍四、使用glob模块进行高级搜索🎉五、使用pathlib库进行现代化操作📚六、实战演练:处理文件内容🌈七、总结与展望下滑查看解决方法                  📂一、遍历文件夹的初步探索  在Python中,遍历文件夹下的所有文件是一个常见的任务。通过Python的内置库os和os.path,我们可以轻松地实现这一功能。首先,让我们从最基础的方法来开始。importosdeflist_files_in_dir(directory):forfilenameinos.listdir(directory):print(filename)#示例使用directory='path/to/your/folder'#替换成你的文件夹路径list_files_in_dir(directory)123456789  这段代码会打印出指定文件夹下所有的文件和子文件夹的名称。但是,它并没有区分文件和文件夹,也没有递归地遍历子文件夹。📁二、区分文件和文件夹  为了区分文件和文件夹,我们可以使用os.path.isfile()和os.path.isdir()函数。importosdeflist_files_and_dirs(directory):forfilenameinos.listdir(directory):path=os.path.join(directory,filename)ifos.path.isfile(path):print(f"文件:{path}")elifos.path.isdir(path):print(f"文件夹:{path}")#示例使用directory='path/to/your/folder'#替换成你的文件夹路径list_files_and_dirs(directory)12345678910111213  这段代码会打印出文件夹下的所有文件和子文件夹的路径,并清晰地标明了它们是文件还是文件夹。🔄三、递归遍历子文件夹  如果我们想要递归地遍历文件夹下的所有子文件夹和文件,我们可以使用递归函数。importosdeflist_all_files(directory):forfilenameinos.listdir(directory):path=os.path.join(directory,filename)ifos.path.isfile(path):print(f"文件:{path}")elifos.path.isdir(path):print(f"进入文件夹:{path}")list_all_files(path)#递归调用#示例使用directory='path/to/your/folder'#替换成你的文件夹路径list_all_files(directory)1234567891011121314  现在,这段代码会递归地遍历指定文件夹下的所有文件和子文件夹,并打印出它们的路径。🔍四、使用glob模块进行高级搜索  Python的glob模块提供了在目录中使用通配符搜索创建文件列表的功能,这使得搜索文件变得更加简单和高效。importglobdefsearch_files_with_glob(pattern):forpathinglob.glob(pattern,recursive=True):print(path)#示例使用#搜索指定文件夹下所有的.txt文件pattern='path/to/your/folder/**/*.txt'#替换成你的文件夹路径search_files_with_glob(pattern)12345678910'运行运行通过使用**通配符,我们可以轻松地搜索文件夹及其所有子文件夹中的文件。🎉五、使用pathlib库进行现代化操作  Python3.4及以上版本引入了pathlib库,它提供了面向对象的方法来处理文件系统路径。frompathlibimportPathdeflist_files_with_pathlib(directory):forpathinPath(directory).rglob('*'):ifpath.is_file():print(path)#示例使用directory='path/to/your/folder'#替换成你的文件夹路径list_files_with_pathlib(directory)12345678910'运行运行  rglob('*')会递归地搜索文件夹及其所有子文件夹中的所有文件和文件夹。然后,我们使用is_file()方法来判断是否为文件。📚六、实战演练:处理文件内容  现在,我们已经学会了如何遍历文件夹下的所有文件,但很多时候,我们还需要进一步处理这些文件的内容。以下是一个示例,它遍历文件夹下的所有.txt文件,并计算它们的总行数。frompathlibimportPathdefcount_lines_in_txt_files(directory):total_lines=0forpathinPath(directory).rglob('*.txt'):ifpath.is_file():withopen(path,'r',encoding='utf-8',errors='ignore')asfile:for_infile:total_lines+=1returntotal_lines#示例使用directory='path/to/your/folder'#替换成你的文件夹路径total_lines=count_lines_in_txt_files(directory)print(f"文件夹中所有.txt文件的总行数为:{total_lines}")123456789101112131415  这段代码首先定义了一个函数count_lines_in_txt_files,它接受一个文件夹路径作为参数。然后,它遍历该文件夹及其所有子文件夹中的所有.txt文件,并逐个打开这些文件。在打开文件时,我们指定了编码为utf-8,并设置了errors='ignore'以忽略可能出现的编码错误。接着,我们使用一个循环来逐行读取文件内容(实际上我们并不真正需要文件内容,只是为了计数),并将行数累加到total_lines变量中。最后,函数返回总行数。🌈七、总结与展望  通过本文的介绍,我们学会了如何使用Python的内置库和第三方库来遍历文件夹下的所有文件,并进行了一些基本的文件处理操作。我们首先从最基础的os模块开始,然后介绍了如何使用glob模块进行高级搜索,最后学习了如何使用pathlib库进行现代化操作。这些技能在处理大量文件时非常有用,尤其是在数据分析和机器学习的项目中。  未来,我们还可以进一步探索如何对文件进行更复杂的操作,如文件内容的解析、修改和保存等。此外,我们还可以结合其他库和工具,如pandas、numpy和scikit-learn等,来进行更高级的数据分析和机器学习任务。希望本文能够为你提供一些有用的指导和启发!🚀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 04:47 , Processed in 0.502510 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表