通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

python如何遍历文件夹下文件

python如何遍历文件夹下文件

使用Python遍历文件夹下的文件的主要方法有:os模块、os.walk()函数、glob模块、pathlib模块。其中,os.walk()函数是最常用的,因为它可以递归地遍历所有子目录。 下面我们将详细描述其中一种方法。

使用os.walk()函数遍历文件夹下的文件是非常直观和强大的方法。它可以递归地遍历目录树,并生成包含目录路径、目录名和文件名的元组。通过遍历这些元组,可以方便地访问文件夹及其子文件夹中的所有文件。

一、os模块

os模块是Python标准库中的一个模块,提供了许多与操作系统交互的函数。我们可以使用os模块中的os.listdir()os.path.join()函数来遍历文件夹下的文件。

import os

def traverse_folder(folder_path):

for filename in os.listdir(folder_path):

file_path = os.path.join(folder_path, filename)

if os.path.isdir(file_path):

traverse_folder(file_path)

else:

print(f'File: {file_path}')

traverse_folder('/path/to/your/folder')

在这个示例中,os.listdir()列出了指定目录下的所有文件和文件夹,os.path.join()将目录路径和文件名合并成一个完整的路径。如果是文件夹,递归调用traverse_folder()函数继续遍历。如果是文件,直接打印文件路径。

二、os.walk()函数

os.walk()函数可以递归地遍历目录树,生成包含目录路径、目录名和文件名的元组。通过遍历这些元组,可以方便地访问文件夹及其子文件夹中的所有文件。

import os

def traverse_folder_with_walk(folder_path):

for root, dirs, files in os.walk(folder_path):

for file in files:

print(f'File: {os.path.join(root, file)}')

traverse_folder_with_walk('/path/to/your/folder')

在这个示例中,os.walk()函数生成的每个元组包含三个元素:当前目录路径root,当前目录下的子目录dirs,当前目录下的文件files。通过遍历这些元组,可以访问所有文件。

三、glob模块

glob模块提供了一个函数来查找匹配特定模式的文件路径名。我们可以使用glob模块来遍历文件夹下的文件。

import glob

def traverse_folder_with_glob(folder_path):

for file_path in glob.glob(folder_path + '//*', recursive=True):

if os.path.isfile(file_path):

print(f'File: {file_path}')

traverse_folder_with_glob('/path/to/your/folder')

在这个示例中,glob.glob()函数使用'//*'模式匹配指定目录及其子目录下的所有文件。通过检查os.path.isfile()函数,可以过滤出文件并打印文件路径。

四、pathlib模块

pathlib模块是Python 3.4引入的一个面向对象的文件系统路径操作库。我们可以使用pathlib模块来遍历文件夹下的文件。

from pathlib import Path

def traverse_folder_with_pathlib(folder_path):

path = Path(folder_path)

for file_path in path.rglob('*'):

if file_path.is_file():

print(f'File: {file_path}')

traverse_folder_with_pathlib('/path/to/your/folder')

在这个示例中,Path(folder_path).rglob('*')返回指定目录及其子目录下的所有文件和文件夹。通过检查file_path.is_file()函数,可以过滤出文件并打印文件路径。

详细介绍os.walk()函数

os.walk()函数是Python标准库中的一个非常强大的函数,它可以递归地遍历目录树,并生成包含目录路径、目录名和文件名的元组。通过遍历这些元组,可以方便地访问文件夹及其子文件夹中的所有文件。

os.walk()函数的使用

os.walk()函数的基本语法如下:

os.walk(top, topdown=True, onerror=None, followlinks=False)

  • top:要遍历的目录树的顶层目录。
  • topdown:可选参数,默认为True。如果为True,先遍历顶层目录,再遍历子目录。如果为False,先遍历子目录,再遍历顶层目录。
  • onerror:可选参数,是一个函数,如果在遍历目录树时遇到错误,将调用该函数。
  • followlinks:可选参数,默认为False。如果为True,将遍历目录树中的符号链接。

os.walk()函数的工作原理

os.walk()函数返回一个生成器,每次迭代都会生成一个包含三个元素的元组:(root, dirs, files)。

  • root:当前遍历的目录路径。
  • dirs:当前目录下的子目录列表。
  • files:当前目录下的文件列表。

通过遍历这些元组,可以访问所有文件夹及其子文件夹中的所有文件。例如:

import os

def traverse_folder_with_walk(folder_path):

for root, dirs, files in os.walk(folder_path):

print(f'Root: {root}')

print(f'Directories: {dirs}')

print(f'Files: {files}')

for file in files:

print(f'File: {os.path.join(root, file)}')

traverse_folder_with_walk('/path/to/your/folder')

在这个示例中,os.walk()函数生成的每个元组包含三个元素:当前目录路径root,当前目录下的子目录dirs,当前目录下的文件files。通过遍历这些元组,可以访问所有文件。

os.walk()函数的高级用法

os.walk()函数除了可以遍历文件夹及其子文件夹中的所有文件外,还可以进行一些高级操作。例如:

  • 过滤文件和目录:可以根据文件名或目录名进行过滤,只处理符合条件的文件或目录。例如:

import os

def traverse_folder_with_walk_and_filter(folder_path):

for root, dirs, files in os.walk(folder_path):

# 过滤掉以'.txt'结尾的文件

files = [f for f in files if not f.endswith('.txt')]

for file in files:

print(f'File: {os.path.join(root, file)}')

traverse_folder_with_walk_and_filter('/path/to/your/folder')

  • 修改遍历顺序:可以通过设置topdown参数来修改遍历顺序,先遍历顶层目录还是子目录。例如:

import os

def traverse_folder_with_walk_and_order(folder_path, topdown=True):

for root, dirs, files in os.walk(folder_path, topdown=topdown):

for file in files:

print(f'File: {os.path.join(root, file)}')

先遍历顶层目录

traverse_folder_with_walk_and_order('/path/to/your/folder', topdown=True)

先遍历子目录

traverse_folder_with_walk_and_order('/path/to/your/folder', topdown=False)

  • 处理遍历错误:可以通过设置onerror参数来处理遍历过程中遇到的错误。例如:

import os

def handle_error(error):

print(f'Error: {error}')

def traverse_folder_with_walk_and_handle_error(folder_path):

for root, dirs, files in os.walk(folder_path, onerror=handle_error):

for file in files:

print(f'File: {os.path.join(root, file)}')

traverse_folder_with_walk_and_handle_error('/path/to/your/folder')

  • 遍历符号链接:可以通过设置followlinks参数来遍历目录树中的符号链接。例如:

import os

def traverse_folder_with_walk_and_follow_links(folder_path, followlinks=True):

for root, dirs, files in os.walk(folder_path, followlinks=followlinks):

for file in files:

print(f'File: {os.path.join(root, file)}')

遍历符号链接

traverse_folder_with_walk_and_follow_links('/path/to/your/folder', followlinks=True)

不遍历符号链接

traverse_folder_with_walk_and_follow_links('/path/to/your/folder', followlinks=False)

小结

使用Python遍历文件夹下的文件的方法有很多种,包括os模块、os.walk()函数、glob模块和pathlib模块。每种方法都有其优缺点,适用于不同的场景。在实际开发中,可以根据具体需求选择合适的方法。

其中,os.walk()函数是最常用和最强大的方法,因为它可以递归地遍历目录树,并生成包含目录路径、目录名和文件名的元组。通过遍历这些元组,可以方便地访问文件夹及其子文件夹中的所有文件。

希望通过本文的介绍,大家能够更好地理解和使用Python遍历文件夹下的文件。

相关问答FAQs:

如何使用Python遍历文件夹中的所有文件?
可以使用os模块中的os.listdir()函数来获取文件夹中的所有文件和子文件夹。通过循环遍历该列表,可以逐一处理文件。示例代码如下:

import os

folder_path = '你的文件夹路径'
for file_name in os.listdir(folder_path):
    full_path = os.path.join(folder_path, file_name)
    if os.path.isfile(full_path):
        print(full_path)

在遍历文件夹时,如何过滤特定类型的文件?
可以使用os.path.splitext()函数来获取文件的扩展名,从而过滤特定类型的文件。例如,如果只想遍历.txt文件,可以在遍历时添加条件:

import os

folder_path = '你的文件夹路径'
for file_name in os.listdir(folder_path):
    if file_name.endswith('.txt'):
        print(os.path.join(folder_path, file_name))

如果需要递归遍历文件夹及其所有子文件夹,该怎么做?
可以使用os.walk()函数,它能够遍历指定目录及其所有子目录,返回目录路径、目录中的文件夹和文件列表。以下是一个示例:

import os

folder_path = '你的文件夹路径'
for root, dirs, files in os.walk(folder_path):
    for file in files:
        print(os.path.join(root, file))

通过以上的方法,可以方便地遍历文件夹及其子文件夹中的文件。

相关文章