如何遍历目录中的文件?
我有一个叫做 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()
,这取决于你是否想要递归地列出文件。