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 02 Python
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
Python实现快速多线程ping的方法
Jul 15 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
python3.6数独问题的解决
Jan 21 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
python图片二值化提高识别率代码实例
Aug 24 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
python安装后的目录在哪里
Jun 21 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 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数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
非常漂亮的JS代码经典广告
2007/10/21 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
python版本五子棋的实现代码
2018/12/11 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
Django--权限Permissions的例子
2019/08/28 Python
python实现复制文件到指定目录
2019/10/16 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
捷克浴室和厨房设备购物网站:SIKO
2018/08/11 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
公益广告宣传方案
2014/02/28 职场文书
共产党员承诺书
2014/03/25 职场文书
中央空调节能方案
2014/06/15 职场文书
实习协议书
2015/01/27 职场文书
走进毛泽东观后感
2015/06/04 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书