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 相关文章推荐
Django的session中对于用户验证的支持
Jul 23 Python
Python实现包含min函数的栈
Apr 29 Python
python获取代理IP的实例分享
May 07 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
简单介绍python封装的基本知识
Aug 10 Python
python初步实现word2vec操作
Jun 09 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
Python之字典对象的几种创建方法
Sep 30 Python
详解matplotlib绘图样式(style)初探
Feb 03 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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 session有效期问题
2009/04/26 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
xtree.js 代码
2007/03/13 Javascript
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JavaScript检查子字符串是否在字符串中的方法
2016/02/03 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
在Python中使用列表生成式的教程
2015/04/27 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
基于hashlib模块--加密(详解)
2017/06/21 Python
使用pandas读取文件的实现
2019/07/31 Python
Python request使用方法及问题总结
2020/04/26 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
2021/03/03 Python
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
汽车机修工岗位职责
2014/03/06 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
酒店前台岗位职责
2015/04/16 职场文书
3招让你摆脱即兴讲话冷场尴尬
2019/08/08 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript