列出除自己以外的Python中所有目录的更好方法是什么?

时间:2015-09-02 21:14:24

标签: python

我想获得IMAGE_DIRECTORY内不包括其自身的所有目录的列表。检查每个条目似乎不是最理想的。有一个更好的方法吗?

   for dir in [x[0] for x in os.walk(IMAGE_DIRECTORY)]:
        if(dir != IMAGE_DIRECTORY):
            files = [dir + "/" +  file for file in os.listdir(dir)]            
            list_of_files.extend(files)

只想感谢各种各样的答案!这么多不同的反应如此之快!

3 个答案:

答案 0 :(得分:0)

def get_subdirs(start_dir):
    return (os.path.join(start_dir,x) for x in next(os.walk(start_dir))[1])

for subdir in get_subdirs(IMAGE_DIR):
    for fname in next(os.walk(subdir))[2]:
        print os.path.join(subdir,fname)

请注意,这不是递归的,它会立即返回startdir

下的所有目录

或只是

print next(os.walk(start_dir))[1]

答案 1 :(得分:0)

这是如何在一行中完成的

print ['/'.join(d.split('/')[1:]) for d in [x[0] for x in os.walk(IMAGE_DIRECTORY)] if d != IMAGE_DIRECTORY]

答案 2 :(得分:0)

跳过第一个元素:

walker = iter(os.walk(IMAGE_DIRECTORY))
next(walker)
for path, files, _ in walker:
    list_of_files.extend(os.path.join(path, f) in files)