广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python怎么实现遍历包含大量文件的文件夹
  • 258
分享到

Python怎么实现遍历包含大量文件的文件夹

2023-07-06 02:07:47 258人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python怎么实现遍历包含大量文件的文件夹”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现遍历包含大量文件的文件夹”吧!在处理大模型的训练数据时,经常需要遍

本篇内容主要讲解“python怎么实现遍历包含大量文件的文件夹”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python怎么实现遍历包含大量文件的文件夹”吧!

在处理大模型的训练数据时,经常需要遍历大型文件夹,其中,可能包括数千万或数亿个文件,这时,一般的Python遍历函数就会非常慢,例如os.walk、glob、path.rglob等等,同时,无法预估整体的遍历时间。

Python怎么实现遍历包含大量文件的文件夹

本文,通过Python的os.scandir,基于广度优先搜索算法,实现可控、高效的遍历文件,同时,输出遍历日志,支持后缀筛选,去除隐藏文件,实现遍历包含大量文件的文件夹的功能。

os.scandir 是一个目录迭代函数,返回 os.DirEntry 对象的迭代器,对应于由 path 指定目录中的条目,这些条目以任意顺序生成,不包括特殊条目 ‘.’ 和 ‘…’。os.scandir 的运行效率要高于 os.walk,在 PEP 471 中,Python 官方也推荐使用 os.scandir 遍历目录 。

源码

def traverse_dir_files_for_large(root_dir, ext=""):    """    列出文件夹中的文件, 深度遍历    :param root_dir: 根目录    :param ext: 后缀名    :return: 文件路径列表    """    paths_list = []    dir_list = list()    dir_list.append(root_dir)    while len(dir_list) != 0:        dir_path = dir_list.pop(0)        dir_name = os.path.basename(dir_path)        for i in tqdm(os.scandir(dir_path), f"[Info] dir {dir_name}"):            path = i.path            if path.startswith('.'):  # 去除隐藏文件                continue            if os.path.isdir(path):                dir_list.append(path)            else:                if ext:  # 根据后缀名搜索                    if path.endswith(ext):                        paths_list.append(path)                else:                    paths_list.append(path)    return paths_list

输出日志:

[Info] 初始化路径开始!
[Info] 数据集路径: /alphafoldDB/pdb_from_uniprot
[Info] dir pdb_from_uniprot: 256it [00:10, 24.47it/s]
[Info] dir 00: 240753it [00:30, 7808.36it/s] 
[Info] dir 01: 241432it [00:24, 9975.56it/s] 
[Info] dir 02: 240466it [00:24, 9809.68it/s] 
[Info] dir 03: 241236it [00:22, 10936.76it/s]
[Info] dir 04: 241278it [00:24, 10011.14it/s]
[Info] dir 05: 241348it [00:25, 9414.16it/s] 

补充

除了上文的方式,小编还为大家整理了其他Python遍历文件夹的方法,需要的可以参考一下

方法一:通过os.walk()遍历,直接处理文件即可

def traverse_dir_files(root_dir, ext=None, is_sorted=True):    """    列出文件夹中的文件, 深度遍历    :param root_dir: 根目录    :param ext: 后缀名    :param is_sorted: 是否排序,耗时较长    :return: [文件路径列表, 文件名称列表]    """    names_list = []    paths_list = []    for parent, _, fileNames in os.walk(root_dir):        for name in fileNames:            if name.startswith('.'):  # 去除隐藏文件                continue            if ext:  # 根据后缀名搜索                if name.endswith(tuple(ext)):                    names_list.append(name)                    paths_list.append(os.path.join(parent, name))            else:                names_list.append(name)                paths_list.append(os.path.join(parent, name))    if not names_list:  # 文件夹为空        return paths_list, names_list    if is_sorted:        paths_list, names_list = sort_two_list(paths_list, names_list)    return paths_list, names_list

方法二:通过pathlib.Path().rglob()遍历,需要过滤出文件,速度较快。注意glob()不支持递归遍历

def traverse_dir_files(root_dir, ext=None, is_sorted=True):    """    列出文件夹中的文件, 深度遍历    :param root_dir: 根目录    :param ext: 后缀名    :param is_sorted: 是否排序,耗时较长    :return: [文件路径列表, 文件名称列表]    """    names_list = []    paths_list = []    for path in list(pathlib.Path(root_dir).rglob("*")):        path = str(path)        name = path.split("/")[-1]        if name.startswith('.') or "." not in name:  # 去除隐藏文件            continue        if ext:  # 根据后缀名搜索            if name.endswith(ext):                names_list.append(name)                paths_list.append(path)        else:            names_list.append(name)            paths_list.append(path)    if not names_list:  # 文件夹为空        return paths_list, names_list    if is_sorted:        paths_list, names_list = sort_two_list(paths_list, names_list)    return paths_list, names_list

到此,相信大家对“Python怎么实现遍历包含大量文件的文件夹”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python怎么实现遍历包含大量文件的文件夹

本文链接: https://www.lsjlt.com/news/357480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现遍历包含大量文件的文件夹
    在处理大模型的训练数据时,经常需要遍历大型文件夹,其中,可能包括数千万或数亿个文件,这时,一般的Python遍历函数就会非常慢,例如os.walk、glob、path.rglob等等...
    99+
    2023-05-15
    Python实现遍历文件夹 Python遍历文件夹 Python 文件夹
  • Python怎么实现遍历包含大量文件的文件夹
    本篇内容主要讲解“Python怎么实现遍历包含大量文件的文件夹”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现遍历包含大量文件的文件夹”吧!在处理大模型的训练数据时,经常需要遍...
    99+
    2023-07-06
  • python怎么遍历文件夹
    本文小编为大家详细介绍“python怎么遍历文件夹”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么遍历文件夹”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本文教程操作环境:windows7系统、P...
    99+
    2023-06-30
  • python怎么遍历文件夹所有文件
    可以使用os模块来遍历文件夹中的所有文件。以下是一个示例代码:```pythonimport os# 遍历文件夹def traver...
    99+
    2023-08-12
    python
  • Python实现遍历读取文件或文件夹
    目录例子os.listdiros.walk遍历读取代码搞机器学习或者深度学习算法很多时候需要遍历某个目录读取文件,特别是经常需要读取某个特定后缀的文件,比如图片的话可能需要读取jpg...
    99+
    2022-11-11
  • golang遍历文件夹怎么实现
    在Go语言中,可以使用filepath.Walk函数来遍历文件夹。filepath.Walk函数会递归地遍历指定的文件夹及其子文件夹...
    99+
    2023-10-20
    golang
  • Python怎么实现递归遍历文件夹搜索文件
    本篇内容主要讲解“Python怎么实现递归遍历文件夹搜索文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现递归遍历文件夹搜索文件”吧!开发背景:电脑的E盘里有很多电子书,以前...
    99+
    2023-06-02
  • nodejs实现遍历文件夹并统计文件大小
    离开公司已经有2个多个月,之前写了不少工具,但在离开公司的当天,我亲手把一年来的所有积累工具和代码都格式化了。今天想起之前在项目中遇到的一个问题,今天将其记录下来。 我在优化内存的时候,遇到一些图片在加载...
    99+
    2022-06-04
    文件大小 遍历 文件夹
  • Python怎么遍历文件夹获取文件名
    在Python中,可以使用os模块来遍历文件夹,并获取文件名。具体步骤如下:1. 导入os模块:`import os`2. 指定要遍...
    99+
    2023-08-08
    Python
  • 怎么在python中遍历文件夹
    今天就跟大家聊聊有关怎么在python中遍历文件夹,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-14
  • java怎么遍历文件夹中的文件
    在Java中,可以使用递归或者循环来遍历文件夹中的文件。下面是两种常见的方法:1. 递归方法:```javaimport java....
    99+
    2023-10-09
    java
  • 使用Python遍历文件夹实现查找指定文件夹
    目录1. 文件夹结构2. 查找指定文件夹下指定文件3. 查找指定文件夹下所有相同名称的文件4. 查找指定文件夹下所有相同后缀名的文件1. 文件夹结构 指定文件夹:E:/Code/Py...
    99+
    2022-11-11
  • Python实现递归遍历文件夹并删除文件
    思路: 遍历文件夹下面的文件夹 如果文件夹名称等于".svn",则修改文件夹的属性(因为".svn"的文件都是只读的,你不能直接删除) 删除此文件夹 如果文件夹名称不等于".svn",则递归上面的方法 Py...
    99+
    2022-06-04
    递归 遍历 文件夹
  • Python遍历文件夹和读写文件的实现代码
    需 求 分 析 1、读取指定目录下的所有文件 2、读取指定文件,输出文件内容 3、创建一个文件并保存到指定目录 实 现 过 程   Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用...
    99+
    2022-06-04
    遍历 文件夹 代码
  • Python遍历文件夹和读写文件的实现方法
    需 求 分 析 1、读取指定目录下的所有文件 2、读取指定文件,输出文件内容 3、创建一个文件并保存到指定目录 实 现 过 程 Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用Ja...
    99+
    2022-06-04
    遍历 文件夹 文件
  • java怎么遍历文件夹内的所有文件
    可以使用递归来遍历文件夹内的所有文件。以下是一个示例代码: import java.io.File; public class F...
    99+
    2023-10-26
    java
  • python怎么循环遍历文件夹内容
    在Python中,可以使用os模块和os.walk()函数来循环遍历文件夹内容。下面是一个简单的示例代码: import os #...
    99+
    2023-10-27
    python
  • python打开文件夹遍历文件的方法是什么
    在Python中,可以使用`os`模块中的`listdir()`函数来打开文件夹并遍历文件。下面是一个示例代码:```pythoni...
    99+
    2023-09-13
    python
  • Python 遍历子文件和所有子文件夹的代码实例
    最近看ECShop到网上找资料,发现好多说明ECShop的文件结构不全面,于是想自己弄个出来。但这是个无聊耗时的工作,自己就写了个Python脚本,可以递归遍历目录下的所有文件和所有子目录,并将结果记录到一...
    99+
    2022-06-04
    遍历 文件夹 实例
  • node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
    node.js版 遍历文件夹下最大的文件,并输出路径,大小 实现代码: function findmax(basepath){ //只能执行一次 if(findmax.s) r...
    99+
    2022-06-04
    遍历 文件夹 路径
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作