Python文件遍历之os、pathlib 遍历文件夹python

liftword5个月前 (12-19)技术文章77

20221208星期四:


# os方式一:通过递归调用,拿到所有文件,或者指定结尾的文件:

# os方式二:通过 os.walk ,拿到目录下所有的目录及文件:

# pathlib方式三:通过 rglob 方法:获取文件夹下(以及子文件夹)所有文件,返回文件路径列表;

# pathlib方式四:同上,使用列表推导式方式:

pathlib方式五:通过 glob 方法:获取文件夹下(不含子文件夹)所有文件,返回文件路径列表;


import os
from pathlib import Path

path = r'F:\filePath'


# os方式一:

# 通过递归调用,拿到所有文件,或者指定结尾的文件:

# os方式一:
# 通过递归调用,拿到所有文件,或者指定结尾的文件:
listfileAll = []
def getAllDirRE(path):
    # 得到当前目录下的所有目录及文件:
    filesList = os.listdir(path)
    # 处理每一个文件:
    for fileName in filesList:
        # 判断是否是路径(用绝对路径):
        fileabsPath = os.path.join(path,fileName)
        if os.path.isdir(fileabsPath):
            # 递归调用:
            getAllDirRE(fileabsPath)
        else:
            # 拿到 .xlsx 结尾的文件:
            if fileName.endswith(".xlsx"):
                listfileAll.append(fileabsPath)
getAllDirRE(path)
print('listfileAll:',len(listfileAll),listfileAll)


# os方式二:

# 通过 os.walk ,拿到目录下所有的目录及文件:

# os方式二:
# 通过 os.walk ,拿到目录下所有的目录及文件:
pathWalk = os.walk(path)
listWalkAll = []
for root,dirs,files in pathWalk:
    """root: F:\filePath
        root: F:\filePath\fileNew
        root: F:\filePath\fileNew\fileThre
    """
    # print('root:',root)
    # 筛除空的列表:
    if files:
        for i in files:
            # 筛选 .xlsx 文件,且不为 __init__.py:
            if i.endswith('.xlsx') and i != '__init__.py':
                listWalkAll.append(os.path.join(root,i))
print('listWalkAll:',len(listWalkAll),listWalkAll)


# pathlib方式三:

# 通过 rglob 方法:获取文件夹下(以及子文件夹)所有文件,返回文件路径列表;

# pathlib方式三:
# 通过 rglob 方法:获取文件夹下(以及子文件夹)所有文件,返回文件路径列表;
folder = Path(path.strip())
result = folder.rglob(f"*.*") # 也可以写成 result = list(folder.rglob(f"*.*"))
# result: <class 'generator'> <generator object Path.rglob at 0x000002227CCC82E0>
print('result:',type(result),result)
result01 = []
for i in result:
    # i: <class 'pathlib.WindowsPath'> F:\filePath\anaconda镜像下载.txt
    # print('i:',type(i),i)
    result01.append(str(i))
# result01: <class 'list'> 10
print('result01:',type(result01),len(result01),result01)


# pathlib方式四:

# 使用列表推导式方式:

# 通过 rglob 方法:获取文件夹下(含子文件夹)所有文件,返回文件路径列表;

# pathlib方式四:
# 使用列表推导式方式:
# 通过 rglob 方法:获取文件夹下(含子文件夹)所有文件,返回文件路径列表;
result02 = [str(f) for f in folder.rglob("*.*") if Path(f).is_file()]
# result01: <class 'list'> 10
print('result02:',type(result02),len(result02),result02)


# pathlib方式五:

# 使用列表推导式方式:

# 通过 glob 方法:获取文件夹下(不含子文件夹)所有文件,返回文件路径列表;

# pathlib方式五:
# 使用列表推导式方式:
# 通过 glob 方法:获取文件夹下(不含子文件夹)所有文件,返回文件路径列表;
# 即,子文件的文件不会获取
result03 = [str(f) for f in folder.glob("*.*") if Path(f).is_file()]
# result01: <class 'list'> 5
print('result03:',type(result03),len(result03),result03)


"""
相对于传统的os及os.path,pathlib具体如下优势:

pathlib实现统一管理,解决了传统操作导入模块不统一问题;
pathlib使得在不同操作系统之间切换非常简单;
pathlib是面向对象的,路径处理更灵活方便,解决了传统路径和字符串并不等价的问题;
pathlib简化了很多操作,简单易用。
"""





相关文章

Python数据类型——列表 python数据类型list

Python是一门高效易用的编程语言,其内置的数据类型也是非常丰富的。其中,列表(List)是Python中最常用的一种数据类型,它的功能非常强大,可以用于存储和处理各种类型的数据。本文将介绍Pyth...

Python生成遍历暴力破解密码,实战的效果差强人意了

这个也就是提供一个思路,需求是这样的,我XX的闺蜜有个rar的压缩包,不知道他是从哪里挣来的,说这个对他比较重要,但是有密码打不开,唉,可怜了我的电脑了因为这个是暴力破解,是把所有的密码进行的遍历,也...

人生苦短,我用python实现遍历文件夹图片并重命名,可真有意思!

今天为大家带来的内容:主要为大家详细介绍了python实现遍历文件夹图片并重命名,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!!!在做深度学习相关项目时,需要标注图片...

Python遍历文件夹及文件操作教程 python遍历文件夹及文件操作教程视频

1. 准备工作在开始之前,请确保你的计算机上已经安装了Python。我们将使用Python的标准库中的os和pathlib模块来进行文件夹的遍历和文件操作。2. 使用os模块遍历文件夹2.1 导入os...

Python编程小技巧,enumerate与内函数zip()遍历

使用enumerate()遍历序列enumerate()函数可以在循环中同时获取元素的索引和值,这比使用普通的for循环更为高效和简洁。示例:python# 使用普通的for循环 lst = [...

超全整理|Python 操作 Excel 库常用操作详解

来源:早起Python作者:陈熹、刘早起大家好,我是早起。在之前的文章中我们曾详细的讲解了如何使用openpyxl 操作Excel,其实在Python中还有其他可以直接操作 Excel 文件的库,如...