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中的Numeric包和Numarray包使用教程
Apr 13 Python
Python中特殊函数集锦
Jul 27 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
python集合比较(交集,并集,差集)方法详解
Sep 13 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python3 爬取图片的实例代码
Nov 06 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
Pytorch之contiguous的用法
Dec 31 Python
Python request中文乱码问题解决方案
Sep 17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 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分页示例代码
2007/03/19 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
js中replace的用法总结
2013/12/27 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
java必学必会之static关键字
2015/12/03 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python元组的概念知识点
2019/11/19 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
numba提升python运行速度的实例方法
2021/01/25 Python
卫校毕业生自我鉴定
2013/10/31 职场文书
外企求职信范文分享
2013/12/31 职场文书
《长征》教学反思
2014/04/27 职场文书
法律专业求职信
2014/05/24 职场文书
真诚的求职信
2014/07/04 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
老公婚前保证书
2015/02/28 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书