我有一个目录日志文件.我想使用Python脚本处理此目录中的每个文件.
for file in directory:
# do something
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
在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)
您可以像这样递归地列出目录中的每个文件。
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)