【问题标题】:How to check if directory contains another directory named"xyz" in python?python - 如何检查目录是否包含另一个名为“xyz”的目录?
【发布时间】:2021-05-13 19:30:12
【问题描述】:

我试图弄清楚如何检查(最好使用 os 模块)一个目录是否包含另一个名为“xyz”的目录。我找到了这个解决方案: How to check if folder is empty with Python? 但是我不需要检查 dir 是否为空,我需要检查 dir 是否有另一个 dir 并且名称必须正确(“xyz”)。另外,我试图在操作系统文档https://docs.python.org/3/library/os.html 中找到一些东西,但我没有想出解决方案。

【问题讨论】:

    标签: python python-3.x directory python-os


    【解决方案1】:

    对于路径中的每个项目(文件夹/文件),它会检查其名称是否为 xyz。

    import os
    path =r'C:\Users'
    for path in os.listdir(path):
        if path=='xyz':
            print(True)
            break
    

    将路径替换为您当前的目录位置。

    【讨论】:

      【解决方案2】:

      试试pathlib:

      from pathlib import Path
      
      inp_path =  Path('.') # specify the path in path constructor
      dir_to_search = 'xyz'
      
      
      def search_for_file(inp_path, dir_to_search):
          return any(
              file.is_dir() and file.name == dir_to_search
              for file in inp_path.glob('**/*')
          )
      
      search_for_file(inp_path, dir_to_search) # this function will look for all the subdirectories.
      

      HOW IT WORKS:

      上面的函数使用glob将路径中的每个文件/目录一一生成,然后通过file.is_dir检查文件是否为目录。如果是,则通过file.name 提取名称并将其与dir_to_search 进行比较。如果结果是True - any 函数将检测它并返回值True 否则False

      【讨论】:

        【解决方案3】:

        你可以用操作系统来做这件事

        file_path = "your directory"
        import os
        arr = list(map(lambda x: x.split('.')[0], os.listdir(file_path)))
        # to cast: "file.text" to "file"
        if 'xyz' in arr:
            ...
        

        【讨论】:

          【解决方案4】:

          您可以使用 os.walk(),将下面的“目录路径”替换为...以及您要检查的目录路径

          for dirname, subdir, filename in os.walk("path of directory"):
              if "xyz" in subdir:
                  print("yes")
                  break # to prevent unnecessarily checking more paths
          else:
              print("no")
          

          注意:这也会检查子目录

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-12-30
            • 2011-04-18
            • 1970-01-01
            • 2014-02-07
            • 1970-01-01
            • 2014-12-19
            • 1970-01-01
            • 2017-04-28
            相关资源
            最近更新 更多