如何遍历目录中的文件?

Bru*_*uce 16 python

我有一个目录日志文件.我想使用Python脚本处理此目录中的每个文件.

for file in directory:
      # do something
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Ign*_*ams 23

使用os.listdir()os.walk(),取决于您是否要递归执行.


luc*_*luc 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)
Run Code Online (Sandbox Code Playgroud)

注意:os.path.walk的第三个参数是你想要的.你会得到它作为回调的第一个arg.

在Python 3中os.path.walk已被删除; 使用os.walk来代替.你只需传递一个目录就可以获得(dirpath, dirnames, filenames)三元组,而不是进行回调.因此,上述的大致相当于

import os

for dirpath, dirnames, filenames in os.walk(your_dir):
    print dirpath
    print dirnames
    print filenames
Run Code Online (Sandbox Code Playgroud)


Mat*_*ujo 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
Run Code Online (Sandbox Code Playgroud)