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爬取网页的编码处理
Nov 04 Python
Python端口扫描简单程序
Nov 10 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
Python实现购物车程序
Apr 16 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
python实现祝福弹窗效果
Apr 07 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
python实现滑雪游戏
Feb 22 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
May 31 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
php模板函数 正则实现代码
2012/10/15 PHP
PHP概率计算函数汇总
2015/09/13 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
document.createElement()用法
2013/03/13 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
详解vue中axios请求的封装
2019/04/08 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
python制作小说爬虫实录
2017/08/14 Python
python数据结构之链表详解
2017/09/12 Python
利用python为运维人员写一个监控脚本
2018/03/25 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python添加菜单图文讲解
2019/06/04 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
python如何随机生成高强度密码
2020/08/19 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
民主生活会发言材料
2014/10/20 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技