Python中获取指定目录下所有文件名的方法

news2024/9/27 17:30:58

在《Python中文件名和路径的操作》中提到,os模块中的函数可以对文件进行操作。通过递归以及os模块中提供的函数,可以获取指定目录下所有的文件名。

1 基本流程

通过递归获取指定目录下所有文件名的基本流程,如图1所示。

图1 基本流程

2 函数实现

2.1 定义函数

定义一个名为walk的函数,该函数有一个参数dirname,表示指定的当前目录,代码如下所示:

def walk(dirname):

2.2 获取并访问当前目录下的所有子文件夹名及文件名

在《Python中文件名和路径的操作》中提到,可以通过os.listdir()函数获取指定目录下的所有子文件夹名及文件名,因此,在walk()函数内容,有如下代码:

for name in os.listdir(dirname):

以上代码通过for循环访问了os.listdir()函数获取到的所有子文件夹名和文件名,并将其保存到变量name中。

2.3 获取文件的绝对路径

在for循环内部,通过os.path.join()函数,获取文件的绝对路径,代码如下所示:

path = os.path.join(dirname, name)

其中,os.path.join()函数作用是将文件夹名和文件名进行连接,参数dirname是walk()函数的参数,即是文件夹名;参数name是os.listdir()函数获取的子文件夹名或文件名。最后,获取到的绝对路径保存在变量path中。

2.4 判断是否是文件

在for循环内部,获取到了绝对路径path之后,接下来判断path是否是文件,代码如下所示:

if os.path.isfile(path):
   print(path)
else:
   walk(path)

以上代码中,如果path是文件,则打印出该文件名;如果path不是文件,则说明是子文件夹,递归调用walk()函数,显示path子文件夹中的所有文件名。

3 函数调用

要想获取当前Python源文件所在目录的所有文件名,可以通过如下代码实现:

cwd = os.getcwd()
walk(cwd)

其中,os.getcwd()函数获取到当前Python源文件所在目录,将该目录作为参数传递给walk()函数,获取到该目录下的所有文件名。

4 完整代码

该程序的完整代码如下所示:

import os

def walk(dirname):
    for name in os.listdir(dirname):
        path = os.path.join(dirname, name)

        if os.path.isfile(path):
            print(path)
        else:
            walk(path)

cwd = os.getcwd()
walk(cwd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web开播系统的技术演进

随着直播SaaS业务的深入发展,Web端开播的诉求变得越来越强烈,对比客户端开播工具如OBS,Web开播与SaaS平台亲和度高,可以让用户快速体验平台全流程,同时易于分享链接,快速连麦。因此,寻求更加稳定…

#10046. 「一本通 2.2 练习 2」OKR-Periods of Words(内附封面)

[POI2006] OKR-Periods of Words 题面翻译 对于一个仅含小写字母的字符串 a a a, p p p 为 a a a 的前缀且 p ≠ a p\ne a pa,那么我们称 p p p 为 a a a 的 proper 前缀。 规定字符串 Q Q Q(可以是空串)表示 a a a 的…

CMake 变量

目录 cmake普通变量 如何取消变量 cmake环境变量 cmake缓存变量 普通变量使用: 缓存变量使用: cmake变量的作用域 block() block demo: function 函数作用域简单 demo 高级变量 总结: 和其他语言一样,cmake完全可以看做是一种编程语言,他有变量,有函数等. cmake普通…

解决uview-plus组件样式修改不生效

一、问题描述 使用 ::v-deep 、/deep/ 等各种 deep 写法后,修改 uview-plus组件样式依旧不生效 二、解决方案 在子组件中写页面布局,在父组件中写CSS样式 目录结构: 父组件中:引入子组件,使用::v-deep修改样式 子组件…

git配置密钥及提交代码到仓库

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 一、git下载及安装 Git官网:www.git-scm.com/ 下载安装包进行安装。 点击downloads下载自己需要的安装包。本文基于windows系统。 下载安装包后双击exe文件,如何一系列next操作…

提升文件管理效率:轻松批量归类文件,按名称细分管理

现代生活中,我们每天都面对着大量的电子文件,如文档、照片、音乐和视频等。这么多文件堆积在一起,怎样快速找到需要的文件成了一个挑战。现在有应该方法可以帮助您提升文件管理效率,方法如下: 首先,第一步…

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

一、架构与术语解释 前面都挺难的吧?实践出真知,后面实践篇的时候,大家应该就能明白了。这一节就来讲个简单的功能------看门狗。看门狗想必大家应该都再熟悉不过了吧,主要就下面三层结构,简单明了,这节确实…

从入门到精通:解锁Linux开发工具和编译器的力量

目录 一.编辑器vim的使用1.vim的基本概念2.vim的使用二.编译器gcc/g1.编译器的使用2.编译器是如何完成的?3.动态库与静态库 一.编辑器vim的使用 1.vim的基本概念 vim是一个方便编程的功能特别丰富的文本编辑器,凭借他简洁的三种模式以及丰富的快捷键操…

Arduino IDE的安装

https://www.arduino.cc/en/software/

AI 绘画 - 建筑绘图辅助设计之 Controlnet

前情提要 2023-06-17 周六 杭州 阴 小记: 早上还是可以听到淅淅沥沥的雨声,或许梅雨季快要来了,潮湿的感觉说不上多讨厌,可是也没有那么喜欢;最近在追动画《飞出个未来》,我是把这个动画当作哲学课来看的&#xff0c…

linux模块的变量与函数导出与引用

在Linux内核中,不同模块之间可以通过导出和引用函数或变量的方式来进行交互。具体而言,Linux内核提供了一些导出和引用符号的机制,这些机制可以使得不同模块之间能够访问并使用彼此的函数或变量。 导出符号的方式一般有两种: 使…

【动态规划算法练习】day12

文章目录 一、978. 最长湍流子数组1.题目简介2.解题思路3.代码4.运行结果 二、413. 等差数列划分1.题目简介2.解题思路3.代码4.运行结果 三、1567. 乘积为正数的最长子数组长度1.题目简介2.解题思路3.代码4.运行结果 总结 一、978. 最长湍流子数组 1.题目简介 978. 最长湍流子…

python输出颜色(终端控制台)

python输出颜色(终端控制台) 1、终端ANSI2、Python自带的函数库ctypes3、colorama 1、终端ANSI 更多查看 ECHOX.bat输出文本背景和文字颜色 其中特殊字符print("Black :[30m f0 [0m Black :[40m b0 [0m")即是print("Black :\033[30m f0 …

3.设计模式之后七种模式桥接装饰者组合外观享元代理模板

1.桥接模式 bridge(抽象类的实现的子类,通过聚合间接调用接口方法 就是桥) 实现和抽象分开,使他可以独立改变结构型设计模式基于类的最小设计原则(增加功能,增加最少个数的类),通过封装 聚合和继承让不同类实现不同职责 图 23桥接模式原理图 图 26桥接模式传统解决手机操作问题…

(六)Spring源码解析:Spring AOP源码解析

〇、AOP概念 Aspect:切面 给业务方法增加到功能,切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知(Advice)。实际就是对主业务逻辑的一种增强。 Pointcut:切入点 切入点指声明的…

Nerf-Wild神经辐射场论文学习笔记 Neural Radiance Fields for Unconstrained Photo Collections

前言: 本文为记录自己在Nerf学习道路的一些笔记,包括对论文以及其代码的思考内容。公众号: AI知识物语 B站讲解:出门吃三碗饭 本篇文章主要针对其数学公式来学习其内容,欢迎批评指正!!&#x…

10-C++学习笔记-字符串

📚 前言 字符串是在编程中广泛使用的数据类型,用于表示一系列字符。在C中,我们可以使用C风格字符串和string类来处理字符串操作。本篇学习笔记将详细介绍字符串的相关知识。 📖 1 C风格字符串 ✨ C风格字符串初始化 C风格字符…

什么是EMC存储 Clarrion存储的cache dirty或者cache lost(CACD)?

CACD是Cant assign, Cache Dirty的缩写,DELL EMC的专业术语。 在开始之前,先介绍下cache dirty的概念,朴素的语言就是有了脏数据,脏数据当然就是不能使用的数据了。为什么数据会脏呢?先从存储的基本概念聊起来。 为了加…

PoseiSwap 将向 Zepoch 节点持有者发放新一轮空投,生态启动在即

目前,随着各类 Layer2 空投不断内卷,越来越多的用户疲于参与其中(参与交互也很有可能难以获得空投资格)。Nautilus Chain 作为目前模块化 Layer3 架构链,在初期就明确了空投计划,即所有上线的应用都将会拿出…