Python3.遍历某文件夹提取特定文件名的实例


本文摘自php中文网,作者不言,侵删。

下面为大家分享一篇Python3.遍历某文件夹提取特定文件名的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

批量处理文件时,常需要先遍历某个路径提取特定条件的文件名。这篇写一个暴力遍历但很简洁的方法,真的非常简洁但是非常暴力。

例子目标是:获得存放遥感数据的文件夹下文件夹名以“_BAD”结尾的文件夹内容。因为该文件下分级很多(年/月/产品类型/),目标文件夹很多且存在在最后一级,手动查看很烦。

代码如下(知识点总结代码后):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# -*- 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()逻辑简单好写,各位随意,我干了!

相关推荐:

python 删除非空文件夹的实例

python复制文件到指定目录

python获取程序执行文件路径的方法

以上就是Python3.遍历某文件夹提取特定文件名的实例的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

基于tpc-c基准的Python orm的性能测试详解

Python是什么语言编写出来的

Python如何查看变量类型

Python是面向对象的语言吗

pycharm编辑器技巧之自动导入模块详解

mac怎么安装Python

Python3 基础爬虫简介

Python如何判断列表为空

Python如何查看父类

Python用什么电脑好

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...