python遍历文件

一、os.walk()

os.walk()打印遍历子目录和文件

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

获取文件夹下面的文件并添加进列表

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
filelist=[]
for root, dirs, files in os.walk('path'):
    for name in files:
        filelist.append(name)

二、os.walk+glob.glob

glob模块的主要方法就是glob,该方法返回所有匹配文件路径列表(list);该方法需要一个参数来指定匹配的路径字符串,其返回的文件名只包括当前目录的文件名,不包括子文件夹里的文件。(所以结合os.walk)

#遍历指定文件夹包括其子文件夹,寻找某种后缀的文件,并返回找到的文件路径列表
#suffix 为指定文件类型
def traverse_dir_suffix(dirPath, suffix):
    suffixList = [ ]
    for (root, dirs, files)in os.walk(dirPath):
            findList = glob.glob(root+'/*.'+suffix)
            for f in findList:
                suffixList.append(f)
    return suffixList

### Python 遍历文件的方法及示例 在 Python 中,遍历文件可以通过多种方式实现。以下是几种常见的方法及其示例代码。 #### 1. 使用 `open` 函数逐行读取文件内容 通过 `open` 函数以文本模式打开文件,并使用 `for` 循环逐行读取文件内容。这种方法适用于处理大文件,因为它不会一次性将整个文件加载到内存中[^1]。 ```python with open('example.txt', 'r') as file: for line in file: print(line.strip()) # 输出每一行并去除末尾的换行符 ``` #### 2. 使用 `readlines` 方法读取所有行 `readlines` 方法会将文件中的每一行作为一个元素存储到列表中,适合需要对文件的所有行进行操作的情况。但需要注意,这种方法可能会占用较多内存,特别是当文件较大时。 ```python with open('example.txt', 'r') as file: lines = file.readlines() for line in lines: print(line.strip()) ``` #### 3. 使用 `os.walk` 遍历目录下的所有文件 `os.walk` 是一个递归遍历目录的强大工具,可以返回当前路径、子目录列表和文件列表的三元组。这使得它非常适合用于查找特定类型的文件或执行批量任务[^5]。 ```python import os def list_text_files(root_dir): text_files = [] for dirpath, dirnames, filenames in os.walk(root_dir): for file in filenames: if file.endswith(".txt"): text_files.append(os.path.join(dirpath, file)) return text_files root_directory = './example_directory' files = list_text_files(root_directory) print(files) ``` #### 4. 使用 `glob` 模块匹配文件名 `glob` 模块提供了一种简单的方式来查找符合特定模式的文件名。例如,可以使用通配符 `*` 来匹配所有 `.txt` 文件[^4]。 ```python import glob text_files = glob.glob('./example_directory/*.txt') for file in text_files: with open(file, 'r') as f: print(f.read()) ``` #### 5. 使用 `pathlib` 模块遍历文件 `pathlib` 是 Python 3.4 引入的一个模块,提供了面向对象的路径操作方式。它可以轻松地遍历目录并处理文件[^4]。 ```python from pathlib import Path directory = Path('./example_directory') for file in directory.rglob("*.txt"): # rglob 支持递归查找 print(file) with open(file, 'r') as f: print(f.read()) ``` ### 注意事项 - 在处理大文件时,建议使用逐行读取的方式以减少内存消耗。 - 当需要递归遍历目录时,`os.walk` 和 `pathlib.Path.rglob` 是非常高效的选择。 - 如果只需要匹配特定模式的文件名,`glob` 模块可能是更简洁的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值