os.walk 没有隐藏文件夹

2024-10-29 08:34:00
admin
原创
43
摘要:问题描述:我需要列出文件夹内包含目录路径的所有文件。我尝试使用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
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用