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 返回汉字的汉语拼音
Feb 27 Python
python常规方法实现数组的全排列
Mar 17 Python
Python中分数的相关使用教程
Mar 30 Python
Python多线程编程(二):启动线程的两种方法
Apr 05 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
TensorFlow入门使用 tf.train.Saver()保存模型
Apr 24 Python
python读取LMDB中图像的方法
Jul 02 Python
python中cPickle类使用方法详解
Aug 27 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python opencv 简单阈值算法的实现
Aug 04 Python
JupyterNotebook 输出窗口的显示效果调整方法
Apr 13 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 xml实例 留言本
2009/03/20 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
jQuery实现返回顶部效果的方法
2015/05/29 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
详解vue组件基础
2018/05/04 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
Python中处理unchecked未捕获异常实例
2015/01/17 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python yield的用法实例分析
2020/03/06 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
django使用graphql的实例
2020/09/02 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
基层工作经历证明
2014/01/13 职场文书
领导干部廉政承诺书
2014/03/27 职场文书
结对共建工作方案
2014/06/02 职场文书
就业协议书样本
2014/08/20 职场文书
融资合作协议书范本
2014/10/17 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
2015双创工作总结
2015/07/24 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python