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)
引用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只有两个空目录t1和t2,所以你会得到:
>>> 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)