首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os.walk大号中的空列表是什么?

os.walk大号中的空列表是什么?
EN

Stack Overflow用户
提问于 2016-01-01 13:11:17
回答 2查看 3.8K关注 0票数 5

当使用python3.5os.walk()并查看dirname输出时,我得到了很多空列表(返回的[ ])。我不知道为什么。

代码语言:javascript
复制
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])

输出:

代码语言:javascript
复制
['t2', 't1']

[]

['t2', 't1']

[]

[]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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只有两个空目录t1t2,所以您将得到:

代码语言:javascript
复制
>>> 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 [] []
票数 4
EN

Stack Overflow用户

发布于 2016-01-01 13:41:29

根据os 文档os.walk返回的是一个三元组(dirpath, dirnames, filenames)

假设您有一个目录testdir

代码语言:javascript
复制
testdir
      |- dir1
      |    |- file3.txt
      |- dir2
      |- file1.txt
      |- file2.txt

然后在os.walk('path/to/testdir')返回的生成器上循环生成以下元组:

代码语言:javascript
复制
('path/to/testdir', ['dir2', 'dir1'], ['file3.txt', 'file1.txt', 'file2.txt'])
('path/to/testdir/dir2', [], [])
('path/to/testdir/dir1', [], ['file3.txt'])

因为您从三元组中提取第一个元素并获得空列表,这意味着这些目录中没有包含子目录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34556433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档