返回

Python 中遍历目录中的每个文件:全面指南

php

如何在 Python 中遍历目录中的每个文件

简介

遍历目录中的每个文件是一个编程任务中经常遇到的步骤。在 Python 中,有几种方法可以高效地完成这一任务。本文将深入探讨这些方法,并提供详尽的示例代码,帮助你轻松掌握遍历目录的技巧。

1. 使用 os.listdir()

os.listdir() 函数是最简单的方法,它返回目录中所有文件(包括子目录)的列表。

示例:

import os

# 获取当前工作目录中的文件列表
files = os.listdir('.')

# 遍历文件列表
for file in files:
    print(file)

2. 使用 os.walk()

os.walk() 函数提供了一种更强大的方法来遍历目录,它生成一个 3 元组,其中包含目录中的所有文件和子目录的根目录、目录列表和文件列表。

示例:

import os

# 遍历当前工作目录及其子目录
for root, directories, files in os.walk('.'):
    for file in files:
        print(os.path.join(root, file))

3. 使用 glob.glob()

glob.glob() 函数可以匹配文件名模式,返回与指定模式匹配的文件列表。

示例:

import glob

# 获取当前工作目录中所有以 ".txt" 结尾的文件
files = glob.glob('*.txt')

# 遍历文件列表
for file in files:
    print(file)

示例应用:计算目录中文件的字节数

问题: 如何计算目录中所有文件的字节数?

解决方案:

import os

# 初始化字节计数器
total_bytes = 0

# 遍历当前工作目录及其子目录
for root, directories, files in os.walk('.'):
    for file in files:
        # 获取文件路径
        file_path = os.path.join(root, file)

        # 获取文件字节数
        file_bytes = os.path.getsize(file_path)

        # 累加字节计数器
        total_bytes += file_bytes

# 打印总字节数
print(f"总字节数:{total_bytes}")

常见问题解答

Q1:如何获取特定扩展名的文件?

A: 使用 glob.glob() 函数,例如 glob.glob('*.pdf')。

Q2:如何仅遍历特定目录而不遍历子目录?

A: 使用 os.listdir() 函数,例如 os.listdir('/my/directory')。

Q3:如何跳过隐藏文件?

A: 使用 os.listdir() 函数,并添加参数 os.listdir('/my/directory', skip_hidden=True)。

Q4:如何在遍历时执行特定操作?

A: 使用 os.walk() 函数,并提供一个 lambda 函数作为参数,用于在遍历过程中执行操作。

Q5:如何防止遍历符号链接?

A: 使用 os.scandir() 函数,并添加参数 os.scandir('/my/directory', follow_symlinks=False)。

结论

遍历目录中的文件是 Python 中一项常见任务,本文介绍了多种高效的方法来完成这一任务。通过理解这些方法的原理和应用,你可以轻松地处理目录中的文件,从而为你的编程项目增添新的功能。