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之正规地说一句话
Sep 28 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
Jacobi迭代算法的Python实现详解
Jun 29 Python
django如何实现视图重定向
Jul 24 Python
python自动化测试之异常及日志操作实例分析
Nov 09 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
Java多线程实现四种方式原理详解
Jun 02 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
浅谈Python项目的服务器部署
Apr 25 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
一段实时更新的时间代码
2006/07/07 Javascript
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
解读ES6中class关键字
2017/11/20 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
axios的拦截请求与响应方法
2018/08/11 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
python解析xml文件实例分析
2015/05/27 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
python 文件操作api(文件操作函数)
2016/08/28 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
深入浅析Python的类
2018/06/22 Python
python字符串查找函数的用法详解
2019/07/08 Python
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
平面设计自荐信
2013/10/07 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
超市国庆节促销方案
2014/02/20 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
工作岗位说明书模板
2014/05/09 职场文书
超市客服工作职责
2014/06/11 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
HDFS免重启挂载新磁盘
2022/04/06 Servers