os.walk 目录名中的空列表是什么?

use*_*030 5 python os.walk python-3.5

当使用 python 3.5os.walk()并查看目录名输出时,我得到很多空列表(返回[ ])。我不知道为什么。

import os
tdir = '/home/pontiac/testdir'

gen0 = os.walk(tdir)
print(next(gen0)[1])
print(next(gen0)[1])

gen1 = os.walk(tdir)

for ea in gen1:
    print(ea[1])
Run Code Online (Sandbox Code Playgroud)

输出:

['t2', 't1']

[]

['t2', 't1']

[]

[]
Run Code Online (Sandbox Code Playgroud)

Iro*_*ist 4

引用Python文档

os.walk(top, topdown=True, onerror=None, followlinks=False)
通过自上而下或自下而上遍历目录树来生成目录树中的文件名。对于树中以目录顶部为根的每个目录(包括顶部本身),它会生成一个3 元组 (dirpath, dirnames, filenames)

dirpath 是一个字符串,目录的路径。dirnames 是 dirpath 中子目录名称的列表(不包括“.”和“..”)。filenames 是 dirpath 中非目录文件的名称列表。请注意,列表中的名称不包含路径组件。要获取 dirpath 中文件或目录的完整路径(从 top 开始),请执行 os.path.join(dirpath, name)。

由于testdir只有两个空目录t1t2,所以你会得到:

>>> import os
>>> t = '/home/pontiac/testdir'
>>> for root, dirs, files in os.walk(t):
    print root, dirs, files


/home/testdir ['t1', 't2'] []
# ^rootdir     ^dirs list  ^files in rootdir 
/home/testdir/t1 [] []
/home/testdir/t2 [] []
Run Code Online (Sandbox Code Playgroud)