当使用python3.5os.walk()并查看dirname输出时,我得到了很多空列表(返回的[ ])。我不知道为什么。
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])输出:
['t2', 't1']
[]
['t2', 't1']
[]
[]发布于 2016-01-01 13:42:48
引用Python文档
os.walk(top, topdown=True, onerror=None, followlinks=False)通过自顶向下或自下而上的方式在目录树中生成文件名。对于根植于目录顶部(包括顶部本身)的树中的每个目录,它都会生成一个3元组(dirpath、dirnames、filename)。 目录路径是一个字符串,是指向目录的路径。目录名是目录路径中子目录的名称列表(不包括'.‘)。还有“.”)。文件名是dirpath中非目录文件名称的列表。注意,列表中的名称不包含路径组件。要获得文件或目录的完整路径(从顶部开始),请执行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 [] []发布于 2016-01-01 13:41:29
根据os 文档,os.walk返回的是一个三元组(dirpath, dirnames, filenames)。
假设您有一个目录testdir
testdir
|- dir1
| |- file3.txt
|- dir2
|- file1.txt
|- file2.txt然后在os.walk('path/to/testdir')返回的生成器上循环生成以下元组:
('path/to/testdir', ['dir2', 'dir1'], ['file3.txt', 'file1.txt', 'file2.txt'])
('path/to/testdir/dir2', [], [])
('path/to/testdir/dir1', [], ['file3.txt'])因为您从三元组中提取第一个元素并获得空列表,这意味着这些目录中没有包含子目录。
https://stackoverflow.com/questions/34556433
复制相似问题