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实现颜色rgb和hex相互转换的函数
Mar 19 Python
Django框架中方法的访问和查找
Jul 15 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
Aug 19 Python
在python中做正态性检验示例
Dec 09 Python
基于python爬取有道翻译过程图解
Mar 31 Python
matplotlib 三维图表绘制方法简介
Sep 20 Python
Python实现异步IO的示例
Nov 05 Python
Python使用BeautifulSoup4修改网页内容
May 20 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 远程关机实现代码
2009/11/10 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
python实现多线程的两种方式
2016/05/22 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
哪些是python中web开发框架
2020/06/17 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题