Python3.遍历某文件夹提取特定文件名的实例


Posted in Python onApril 26, 2018

批量处理文件时,常需要先遍历某个路径提取特定条件的文件名。这篇写一个暴力遍历但很简洁的方法,真的非常简洁但是非常暴力。

例子目标是:获得存放遥感数据的文件夹下文件夹名以“_BAD”结尾的文件夹内容。因为该文件下分级很多(年/月/产品类型/),目标文件夹很多且存在在最后一级,手动查看很烦。

代码如下(知识点总结代码后):

# -*- coding: utf-8 -*-
"""
遍历某路径下所有文件夹,获得特定文件夹下所有文件
很暴力,真的遍历了所有的文件夹
20180124
@author: 墨大宝
"""
import os
TARGETPATH = r'F:\MODIS_DATA'
records = []
for currentDir, _, includedFiles in os.walk(TARGETPATH):
 if not currentDir.endswith('_BAD'): continue
 else:
  records.append(currentDir) # 将以“_BAD”结尾的文件夹名加入records
  records.extend(includedFiles) # 将该文件夹内的文件名列表扩展到records
# 将records写入.txt
txtFile = open(os.path.join(TARGETPATH, '02_04_BAD.txt'), 'w')
txtFile.write(os.linesep.join(records))
txtFile.close()
# 将排序后的records写入.txt
with open(os.path.join(TARGETPATH, '02_04_BAD_SORTED.txt'), 'w') as txtFile:
 txtFile.write('\n'.join(sorted(records)))

os.walk()返回Directory tree generator。每次生成格式为(dirpath, dirnames, filenames) 的tuple,元素依次是当前路径、当前路径下文件夹列表、当前路径下文件名列表。

list的.append()、.extend()和.sort()方法都是原地修改,sorted()函数不是。

将list写入.txt文件时需要把list转为str,直接用str()函数强转会很丑,用换行符连接list每个元素会好看很多。

os.path代表系统换行符,windows下为”\r\n”,其他系统多是”\n”。然而无论是用os.path还是”\n”连接列表元素,最后用windows记事本打开都一样换行,但是用vs code打开的话os.path会多换一行即看上去一行间一行,这里面到底为啥有点说到,可能和Python的write机制有关,暂时不深究(留坑)。

关于文件读写,大多数资料推荐with as形式,确实更简洁一点。

PS:

说os.walk()暴力是因为它真的按照目录树遍历了所给路径中的所有文件夹和文件,文件量大而所要找的文件名少的情况下会慢一些(其实我觉得慢不了多少),用os.listdir()写成递归函数的话执行效率可能会高一些,但是os.walk()逻辑简单好写,各位随意,我干了!

以上这篇Python3.遍历某文件夹提取特定文件名的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 时间处理datetime实例
Sep 06 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 Python
浅谈Python3多线程之间的执行顺序问题
May 02 Python
基于Django集成CAS实现流程详解
Nov 28 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 #Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 #Python
Python实现字符串的逆序 C++字符串逆序算法
May 28 #Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 #Python
TensorFlow损失函数专题详解
Apr 26 #Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 #Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 #Python
You might like
分享PHP入门的学习方法
2007/01/02 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
python ssh 执行shell命令的示例
2020/09/29 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
集体婚礼证婚词
2014/01/13 职场文书
商场中秋节广播稿
2014/01/17 职场文书
实习公司领导推荐函
2014/05/21 职场文书
个人自荐材料
2014/05/23 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
Redis三种集群模式详解
2021/10/05 Redis
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫