os.walk 没有隐藏文件夹

2024-10-29 08:34:00
admin
原创
208
摘要:问题描述:我需要列出文件夹内包含目录路径的所有文件。我尝试使用os.walk,这显然是完美的解决方案。但是,它还列出了隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有什么标志可以用来让它不产生任何隐藏文件吗?跨平台对我来说并不重要,如果它只适用于 Linux 就没问题了(.* 模式)解决...

问题描述:

我需要列出文件夹内包含目录路径的所有文件。我尝试使用os.walk,这显然是完美的解决方案。

但是,它还列出了隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。有什么标志可以用来让它不产生任何隐藏文件吗?

跨平台对我来说并不重要,如果它只适用于 Linux 就没问题了(.* 模式)


解决方案 1:

不,没有os.walk()跳过这些的选项。你需要自己做(这很容易):

for root, dirs, files in os.walk(path):
    files = [f for f in files if not f[0] == '.']
    dirs[:] = [d for d in dirs if not d[0] == '.']
    # use files and dirs

注意dirs[:] =切片分配;os.walk递归遍历 中列出的子目录dirs。通过将 的元素替换为满足条件的dirs元素(例如,名称不以 开头的目录.),os.walk()将不会访问不符合条件的目录。

这仅当您保留topdown关键字参数时才有效True,来自的文档os.walk()

topdown为 时True,调用者可以就地修改 dirnames 列表(可能使用del或切片分配),并且walk()只会递归到名称保留在dirnames中的子目录;这可用于修剪搜索,施加特定的访问顺序,甚至在再次walk()恢复之前告知调用者创建或重命名的目录walk()

解决方案 2:

我知道问题中没有问到这个问题,但我遇到了类似的问题,我想排除隐藏文件和以 开头的文件__,特别是__pycache__目录。我之所以想到这个问题,是因为我想弄清楚为什么我的列表推导没有达到我的预期。我没有用 修改列表dirnames[:]

我创建了一个想要排除的前缀列表,并修改了目录名,如下所示:

    exclude_prefixes = ('__', '.')  # exclusion prefixes
    for dirpath, dirnames, filenames in os.walk(node):
        # exclude all dirs starting with exclude_prefixes
        dirnames[:] = [dirname
                       for dirname in dirnames
                       if not dirname.startswith(exclude_prefixes)]

解决方案 3:

我的用例与 OP 的用例类似,只是我想返回某个文件夹内子目录的总数。在我的例子中,我想省略任何命名的子目录.git(以及可能嵌套在这些.git文件夹中的任何文件夹)。

在 Python 3.6.7 中,我发现接受的答案的方法不起作用——它计算了所有.git文件夹及其子文件夹。以下是对我有用的方法:

num_local_subdir = 0
for root, dirs, files in os.walk(local_folder_path):
    if '.git' in dirs:
        dirs.remove('.git')
    num_local_subdir += (len(dirs))

解决方案 4:

另一种解决方案是允许您使用任何和映射函数跳过那些隐藏文件夹。

for root, dirs, files in os.walk(path):
    if any(map(lambda p: p[0] == '.', dirs)):
        continue
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用