码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python--利用os模块读取指定目录下所有文件名


    文章目录

      • 源码
      • 思路
      • 过程
        • 1.直接引入os模块即可
        • 2.既然我们使用到了os模块,就看看它所带的内置方法哪些可以读取文件名
        • 3.考虑递归思想


    源码

    import os
    
    def scanfile(path):
        filelist = os.listdir(path)
        for filename in filelist:
            filepath = os.path.join(path, filename)
            if os.path.isdir(filepath):
                scanfile(filepath)
            print(filepath)
    
    allfile = scanfile('自定义指定路径')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    思路

    1.使用第三方模块
    2.怎么样读取到文件的名字
    3.要求指定目录下所有文件的名字,若遇到文件夹则需要进一步读取

    过程

    1.直接引入os模块即可

    os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。

    import os
    
    • 1

    在这里插入图片描述

    2.既然我们使用到了os模块,就看看它所带的内置方法哪些可以读取文件名

    首先找到了os.listdir可以读取指定路径下所有文件和文件夹的名字
    比如我创建了一个文件夹,里面包含了1.txt,文件夹2,3.doc
    在这里插入图片描述
    使用os.listdir来试着读取一下
    定义一个函数,就叫它scanfile吧,扫描文件的意思
    需要传入的参数就是我们的文件路径

    import os
    
    def scanfile(path):
        filelist = os.listdir(path)
        print(filelist)
    
    allfile = scanfile('D:\Desktop\\test')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    得出结果
    在这里插入图片描述
    ok,到这里我们读取的功能算是完成一半了
    不过,刚才提到文件夹的名字是2
    而我们想要的是读取指定路径下所有文件的名字!
    在这里插入图片描述

    所以代码还不够完善
    那么,要怎么进行下去呢?

    3.考虑递归思想

    既然我们要打印的是文件名字,那么遇到文件夹就应该再“扫描”一次
    也就是再一次使用scanfile函数去执行这个文件夹路径
    想法有了
    首先,先确认当前读到的是文件还是文件夹
    从刚才的输出结果可以看出返回了一个列表

    ['1.txt', '2', '3.doc']
    
    • 1

    那么就可以for循环遍历一下

    for filename in filelist:
    
    • 1

    将文件和路径进行拼接

    filepath = os.path.join(path, filename)
    
    • 1

    试着打印输出一下,看到是完整路径
    在这里插入图片描述
    接着使用os.path.isdir()来确认当前路径是否文件夹
    如果是就再一次使用scanfile,
    不是的话就直接输出文件名(也就是filename)

    if os.path.isdir(filepath):
    	scanfile(filepath)
    print(filepath)
    
    • 1
    • 2
    • 3

    这次代码输出结果
    在这里插入图片描述
    验证
    在这里插入图片描述

  • 相关阅读:
    ESP8266-Arduino编程实例-VCNL4010光传感器驱动
    java switch case 多条件 正确案例&错误案例
    好家伙!阿里并发核心编程宝典(2022版)一夜登顶Github热榜第三
    知识蒸馏1:基础原理讲解及yolov5项目实战介绍
    Java 线程
    【Telegraf 介绍】
    Semaphore 基本原理
    解决Nacos配置刷新问题: 如何启用配置刷新功能以及与`@RefreshScope`注解的关联问题
    vue学习之textarea输入英文时换行
    【面试题】说说你对 async和await 理解
  • 原文地址:https://blog.csdn.net/weixin_51213906/article/details/125889484
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号