os.walk是否利用操作系统返回的文件类型来提高效率?

Mar*_*som 2 python directory optimization

os.walk函数返回目录和文件的单独列表.许多常见操作系统(如Windows和Linux)上的底层OS调用返回一个文件类型或标志,指定每个目录条目是文件还是目录; 如果没有此标志,则必须再次为每个返回的文件名查询操作系统.代码是否os.walk利用这些信息或将其丢弃os.listdir

Mar*_*ers 5

不,它没有.

在引擎盖下,os.walk()使用os.listdir()os.path.isdir()单独列出文件和目录.查看源代码walk().

特别:

try:
    # Note that listdir and error are globals in this module due
    # to earlier import-*.
    names = listdir(top)
except error, err:
    if onerror is not None:
        onerror(err)
    return

dirs, nondirs = [], []
for name in names:
    if isdir(join(top, name)):
        dirs.append(name)
    else:
        nondirs.append(name)
Run Code Online (Sandbox Code Playgroud)

其中listdirisdir是用于模块的全局os.listdir()os.path.isdir()功能.它为子目标递归调用.