如何遍历目录中的文件?

18 投票
9 回答
40550 浏览
提问于 2025-04-16 11:22

我有一个叫做 logfiles 的文件夹。里面有很多文件,我想用一个 Python 脚本来处理这些文件。

for file in directory:
      # do something

我该怎么做呢?

9 个回答

5

你可以通过下面的方式,递归地列出一个文件夹中的所有文件。

from os import listdir
from os.path import isfile, join, isdir

def getAllFilesRecursive(root):
    files = [ join(root,f) for f in listdir(root) if isfile(join(root,f))]
    dirs = [ d for d in listdir(root) if isdir(join(root,d))]
    for d in dirs:
        files_in_d = getAllFilesRecursive(join(root,d))
        if files_in_d:
            for f in files_in_d:
                files.append(join(root,f))
    return files
6

在Python 2中,你可以尝试这样的代码:

import os.path

def print_it(x, dir_name, files):
    print dir_name
    print files

os.path.walk(your_dir, print_it, 0)

注意:os.path.walk的第三个参数可以是你想要的任何东西。你会在回调函数的第一个参数中得到它。

在Python 3中,os.path.walk这个功能被去掉了;你应该使用os.walk。它不再需要回调函数,而是直接传入一个目录,它会返回一个包含(目录路径, 目录名, 文件名)的三元组。所以,上面的代码大致可以改成:

import os

for dirpath, dirnames, filenames in os.walk(your_dir):
    print dirpath
    print dirnames
    print filenames
27

可以使用 os.listdir() 或者 os.walk(),这取决于你是否想要递归地列出文件。

撰写回答