遍历文件夹所有文件,只需3行Python代码?!

今天分享的话题是“遍历所有文件”。

数据处理过程中往往拥有大量的文件,而各个文件可能又放在不同文件夹中。

因此一个一个文件去打开关闭获取数据,那效率太低了。

在一般情况下,我们遍历一个文件夹中所有的文件的方法是:

1. 打开文件夹,判断是否存在文件和子文件夹,输出文件路径;

2. 继续遍历子文件夹,判断里面是否存在文件或文件夹;

3. 遍历到子文件中的只存在文件时,返回上级目录,继续重复上述1~2,直到遍历完所有文件夹。

那么,用code实现上述过程具体如下:


def get_all_file(directory):
    os.chdir(directory)  # 改变工作目录
    for each_file in os.listdir(os.curdir):
        if os.path.isfile(each_file):
            print(os.getcwd() + os.sep + each_file)
        if os.path.isdir(each_file):
            get_all_file(each_file)  # 递归调用
            os.chdir(os.pardir)   # 递归调用结束返回上一级目录
directory = r"F:\test"
get_all_file(directory)

上述code我们一共用到了7个os函数,具体的用法可以看我上期的文章,在这里不过多赘述。

其实从code可以直观看出,遍历文件夹的过程就是递归操作。

并且最重要的是每次遍历完内部文件夹后必须要返回上一层级。

整个过程还是挺复杂的~


那么,今天分享一个只需3行代码搞定文件夹中所有文件的方法!


for root, dirs, files in os.walk(directory):
    for file in files:
        print(os.path.join(root, file))

在code中用到了一个os.walk()方法,它主要用于遍历目录和其子目录,并返回一个三元组 (root, dirs, files) 的生成器。

函数语法:

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

参数详解:

top:必需参数,需要遍历的目录路径。

topdown:可选参数,若设置为 True(默认值),则遍历会按照目录树自上而下的顺序进行。若设置为 False,则遍历顺序会根据文件系统的实际情况来决定。

onerror:可选参数,当在遍历过程中遇到错误时,此参数定义的处理函数会被调用。默认情况下,如果遇到错误会抛出异常。

followlinks:可选参数,若设置为 True,则会遍历目录下的符号链接子目录;若设置为 False,则忽略它们。

返回值:

os.walk() 函数每次迭代都会返回当前目录的路径(root)、子目录列表(dirs)和文件列表(files)。

root:代表当前遍历的目录路径,是字符串类型。

dirs:代表 root 路径下的所有子目录名称,是列表类型,列表中的每个元素是字符串类型,代表子目录名称。

files:代表 root 路径下的所有子文件名称,返回列表类型,列表中的每个元素是字符串类型,代表子文件名称。

假设你有一个文件夹,其目录结构如下:

test/

  dir1/  

      file1.txt

      file2.txt

  dir2/

       file3.txt

  file4.txt

你可以使用以下代码来遍历这个文件夹:


import os    
for root, dirs, files in os.walk("test"):
      print("现在的目录:", root)
      print("该目录下包含的子目录:", dirs)
      print("该目录下包含的文件:", files)
      print("="*20)

输出将会是:


现在的目录: test  
该目录下包含的子目录: ['dir1', 'dir2']  
该目录下包含的文件: ['file4.txt']  
====================  
现在的目录: test/dir1  
该目录下包含的子目录: []  
该目录下包含的文件: ['file1.txt', 'file2.txt']  
====================  
现在的目录: test/dir2  
该目录下包含的子目录: []  
该目录下包含的文件: ['file3.txt']  
====================

写在最后

os.walk() 函数以一种深度优先的策略(depth-first)访问指定的目录,首先访问当前目录,然后递归地访问其子目录。

在遍历过程中,它会返回当前目录的路径、子目录列表和文件列表,使得你可以对这些信息进行进一步的处理。

以上为今天的全部分享,希望对你有用。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值