列表理解-在python中,排除以下划线开头或长度超过六个字符的文件夹



我想存储所有文件夹名称,但以下划线(_)开头或包含6个以上字符的文件夹除外。为了获得列表,我使用这个代码

folders = [name for name in os.listdir(".") if os.path.isdir(name)]

我需要做什么改变才能得到想要的输出。

最简单的方法是将列表理解的if子句扩展为包含另外两个子句:

folders = [name for name in os.listdir(".") 
           if os.path.isdir(name) and name[0] != '_' and len(name) <= 6]

另一种方法是使用os.walk。这将从您指定的顶级目录遍历整个目录树。

import os
from os.path import join
all_dirs  = []
for root,dirs,filenames in os.walk('/dir/path'):
    x = [join(root,d) for d in dirs if not d.startswith('_') and len(d)>6]
    all_dirs.extend(x)
print all_dirs # list of all directories matching the criteria

列表理解可能太难了,所以我对其进行了扩展,以明确条件是什么:

folders = []
for name in os.listdir('.'):
   if os.path.isdir(name):
      dirname = os.path.basename(name)
      if not (dirname.startswith('_') or len(dirname) > 6):
         folders.append(name)

相关内容

  • 没有找到相关文章

最新更新