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类属性与实例属性用法分析
May 09 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
Python应用领域和就业形势分析总结
May 14 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
在Python中画图(基于Jupyter notebook的魔法函数)
Oct 28 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
Python短信轰炸的代码
Mar 25 Python
python小程序之飘落的银杏
Apr 17 Python
python process模块的使用简介
May 14 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
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
用于table内容排序
2006/07/21 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
JavaScript实现前端分页控件
2017/04/19 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
jquery添加div实现消息聊天框
2020/02/08 jQuery
Python将xml和xsl转换为html的方法
2015/03/10 Python
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
python 追踪except信息方式
2020/04/25 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
.NET常见笔试题集
2012/12/01 面试题
学校岗位设置方案
2014/01/16 职场文书
总经理司机职责
2014/02/02 职场文书
汽车维修求职信
2014/06/15 职场文书
优秀团员自我评价
2015/03/10 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书