python中如何遍历文件夹及其子文件夹中的所有文件(附实现代码)

2023-11-12

【时间】2018.10.27

【题目】python中如何遍历文件夹及其子文件夹中的所有文件

目录

概述

一、使用os.listdir()函数+递归的方式实现

二、使用os.walk()函数实现


概述

      本文提供了python中如何遍历文件夹及其子文件夹中的所有文件的两种方法。两者均返回文件名列表(可以选择文件名列表或者是包含完整路径的文件名列表)。一种是使用os.listdir()函数+递归的方式,另一种用到了os.walk()函数,第二种方法比较简便。

 

一、使用os.listdir()函数+递归的方式实现

【实现代码】:

import os


image_path = 'F:\\test\\frames'


# 遍历文件夹及其子文件夹中的文件,并存储在一个列表中

# 输入文件夹路径、空文件列表[]

# 返回 文件列表Filelist,包含文件名(完整路径)

def get_filelist(dir, Filelist):

    newDir = dir

    if os.path.isfile(dir):

        Filelist.append(dir)

        # # 若只是要返回文件文,使用这个

        # Filelist.append(os.path.basename(dir))

    elif os.path.isdir(dir):

        for s in os.listdir(dir):

            # 如果需要忽略某些文件夹,使用以下代码

            #if s == "xxx":

                #continue

            newDir=os.path.join(dir,s)

            get_filelist(newDir, Filelist)

    return Filelist



if __name__ =='__main__' :

    list = get_filelist('F:\\test\\frames', [])

    print(len(list))

    for e in list:

        print(e)

【补充说明】:

1、os.path.basename()函数用于返回路径path最后的文件名。若path以/或\结尾,那么就会返回空值。例如:

二、使用os.walk()函数实现

 

【实现代码】

import os

path ='F:\\test\\frames'

def get_filelist(dir):

    Filelist = []

    for home, dirs, files in os.walk(path):

        for filename in files:

            # 文件名列表,包含完整路径

            Filelist.append(os.path.join(home, filename))

            # # 文件名列表,只包含文件名

            # Filelist.append( filename)

    return Filelist

if __name__ =="__main__":

    Filelist = get_filelist(dir)

    print(len( Filelist))

    for file in  Filelist :

        print(file)

 

 

【补充说明】:

1、os.walk的函数声明为:

walk(top, topdown=True, οnerrοr=None, followlinks=False)

参数

  • top 是你所要便利的目录的地址

  • topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)

  • onerror 需要一个 callable 对象,当walk需要异常时,会调用

  • followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)

os.walk 的返回值是一个生成器(generator),也就是说我们需要不断的遍历它,来获得所有的内容。

每次遍历的对象都是返回的是一个三元组(root,dirs,files)

  • root 所指的是当前正在遍历的这个文件夹的本身的地址

  • dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)

  • files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python中如何遍历文件夹及其子文件夹中的所有文件(附实现代码) 的相关文章

  • 如果两点之间的距离低于某个阈值,则从列表中删除点

    我有一个点列表 只有当它们之间的距离大于某个阈值时 我才想保留列表中的点 因此 从第一个点开始 如果第一个点和第二个点之间的距离小于阈值 那么我将删除第二个点 然后计算第一个点和第三个点之间的距离 如果该距离小于阈值 则比较第一点和第四点
  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • Pandas 日期时间格式

    是否可以用零后缀表示 pd to datetime 似乎零被删除了 print pd to datetime 2000 07 26 14 21 00 00000 format Y m d H M S f 结果是 2000 07 26 14
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Jupyter Notebook 找不到 Python 模块

    不知道发生了什么 但每当我使用 ipython 氢 原子 或 jupyter 笔记本时都找不到任何已安装的模块 我知道我安装了 pandas 但笔记本说找不到 我应该补充一点 当我正常运行脚本时 python script py 它确实导入
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • 面面俱到!涵盖Java所有核心技术,阿里新产2023版Java面试核心突击手册太全了!

    程序员面试背八股 可以说是现在互联网开发岗招聘不可逆的形式了 其中最卷的当属Java 网上动不动就是成千上百道的面试题总结 你要是都能啃下来 平时技术不是太差的话 面试基本上问题就不会太大 这时候尴尬的现象就出现了 虽然八股文背的好并不能代
  • OpenBSD 安装

    OpenBSD 被誉世上最安全的系统 OpenBSD有最前沿的安全技术 适合于做防火墙和分布式环境下的私有网络服务 OpenBSD组每6个月发布一个新的发行版 即每年的 月 日和11月1日发布 你可以在此找到关于开发周期的更多信息 Open
  • Redis缓存更新策略、详解并发条件下数据库与缓存的一致性问题以及消息队列解决方案

    0 前言 我们知道 缓存由于在内存中 数据处理速度比直接操作数据库要快很多 因此常常将数据先读到缓存中 再进行查询 更新等操作 但与之而来的问题就是 内存中的数据不仅没有持久化 而且需要保证redis和数据库中数据的一致性 针对这个问题 r
  • Matlab 如何绘制复杂曲线的包络线

    Matlab 如何绘制复杂曲线的包络线 http jingyan baidu com article aa6a2c14d36c710d4c19c4a8 html 如果一条曲线 比如声音波形 波动很大 曲折复杂 可以通过绘制包络线的方式使其更
  • C语言——通讯录的实现

    目录 创建项目环境 创建结构体 test c文件 创建通讯录 增加联系人 打印通讯录 删除指定联系人 查找联系人 更改联系人 排列通讯录 完善通讯录 代码 结语 创建项目环境 对于这个通讯录的实现 我们可以像写三子棋一样 怎样去思考 那首先
  • PageHelper的简单使用

    PageHelper是mybatis框架的一个插件 用于支持在mybatis执行分页操作 使用非常方便 在这儿写一下基本的使用 github文档地址 https github com pagehelper Mybatis PageHelpe
  • 解决 Android Studio 提示Untrusted Server's certificate 证书不可用( Server's certificate is not trusted )

    如图 一打开工程提示证书不可用 记录下问题 以便重复遇到 解决 点击android studio左上角的File gt Settings gt Tools gt Server Certificates gt Accept non trust
  • 处理高并发、高访问之Apache优化

    前言 项目100人同时访问 导致访问速度变慢 作为一个没有遇到过这种情况下的辕 在各种查阅资料后 先用删除日志更改日志输出的方法处理后 处理方法 修改Apache日志输出相关配置方法 暂时好缓 后来又出现变慢 在查阅各种博客后 发现一个处理
  • LeetCode-2341. 数组能形成多少数对【哈希表,计数】

    LeetCode 2341 数组能形成多少数对 哈希表 计数 题目描述 解题思路一 哈希表 将数组中的数加入哈希表中 若有两个相同的数就记录下来 并消去两个 最后只需遍历哈希表中置为1的个数即可 解题思路二 优化是 将a最后进行计算 即a
  • HTML网页设计——轮滑运动体育类人物介绍主题12页面毕业设计网页

    精彩专栏推荐 作者简介 一个热爱把逻辑思维转变为代码的技术博主 作者主页 主页 获取更多优质源码 web前端期末大作业 毕设项目精品实战案例 1000套 程序员有趣的告白方式 HTML七夕情人节表白网页制作 110套 超炫酷的Echarts
  • java——爬虫和数据清洗

    数据清洗 什么是数据清洗 1 数据清洗 Data cleaning 对数据进行重新审查和校验的过程 目的在于删除重复信息 纠正存在的错误 并提供数据一致性 数据清洗从名字上也看的出就是把 脏 的 洗掉 指发现并纠正数据文件中可识别的错误的最
  • vue中axios的post请求url自动带上本地ip解决方法

    描述 解决方法 1 URL地址错误 https 或者http 写错了 占比90 2 URL地址正确 但是 VUE APP BASE API http 10 196 33 41 8082 crm admin 前后有空格 去掉空格就好了 ENV
  • Qt实现拖拽功能(支持拖放文件、拖放操作)

    目录 拖放 Qt程序接受其他程序的拖拽 部件 控件之间相互拖放 总结 拖放 拖放是在一个应用程序内或者多个应用程序之间传递信息的一种直观的现代操作方式 除了为剪贴板提供支持外 通常它还提供数据移动和复制的功能 拖放操作包括两个截然不同的动作
  • C++标准cout输出精度解析

    参考 https www cnblogs com shikamaru p 7830963 html 一 cout输出默认精度为6位有效数 可以通过cout lt
  • Elasticsearch-聚合分析的原理及精准度问题

    目录 分布式系统的近似统计算法 Min聚合分析的执行流程 Terms Aggregation Term 聚合的分析流程 Terms不正确的案例 解决Terms不准的问题 提升shard size的参数 打开show term doc cou
  • 队列(Queue) ——(一)静态线式实现

    队列 特点 先进先出 这里主要讲下静态线式的实现 由于普通队列会导致空间浪费 所以主要讲循环队列 其中 由于特点是先进先出 所以需要两个可以动的指针分别来表示进 rear 和出 front 当front rear时 表示空 表示满的方法则比
  • electron安装

    electron安装 Electron安装 Electron是一种强大的桌面应用开发框架 使用HTML CSS和JavaScript构建跨平台的应用程序 它基于Node js和Chromium 可以在Windows macOS和Linux等
  • Apktool使用报错:brut.directory.DirectoryException: file must be a directory

    我把apktool bat apktool jar和我自己的apk都放到了C windows下 然后运行cmd 报错 Exception in thread main brut androlib AndrolibException brut
  • 国际阿里云腾讯云免费:目标存储OSS版别操控功用注册详细阐明

    腾讯云目标存储OSS版别操控功用注册详细阐明 简介 阿里云OSS目标存储创立Bucket时能够选择是否注册版别操控功用 什么是OSS版别操控功用 OSS目标存储有必要注册版别操控吗 注册版别操控需要另外付费吗 阿里云账号一 阿里云OSS目标
  • python中如何遍历文件夹及其子文件夹中的所有文件(附实现代码)

    时间 2018 10 27 题目 python中如何遍历文件夹及其子文件夹中的所有文件 目录 概述 一 使用os listdir 函数 递归的方式实现 二 使用os walk 函数实现 概述 本文提供了python中如何遍历文件夹及其子文件