【问题标题】:Get absolute path of files in sub-directory获取子目录中文件的绝对路径
【发布时间】:2020-05-28 12:24:47
【问题描述】:

我有一个包含其他目录的目录。这些子目录中的每一个都有我需要绝对路径的文件。例如,假设父目录是 /home/Documents,每个子目录是 1、2、...、10。我尝试过类似 files = [os.path.abspath(f) for d in os.listdir('/home/Documents') for f in os.listdir(d)] 的东西,但这让我得到了类似的东西(对于文件) /home/Documents/file1,应该是 /home/Documents/1/file1。有没有办法用那里的子目录来做到这一点?

【问题讨论】:

    标签: python file path


    【解决方案1】:

    使用os.path.join:

    root = '/tmp/project'
    files = [os.path.join(root, d, f) for d in os.listdir(root) for f in os.listdir(os.path.join(root, d))]
    print files
    

    输出:

    ['/tmp/project/auth/__init__.py', '/tmp/project/controllers/__init__.py']
    

    【讨论】:

      【解决方案2】:

      是的。你可以试试os.walk。 考虑以下具有 3 个子目录的路径:“1”、“2”、“3”。
      - '1' 有一个文件 ("123.txt") - '2' 为空 - '3' 有 2 个文件(“123.txt”、“1234.txt”)

      path = r"C:\Users\hvasala\Documents\Udemy Course\project\del"
      import os
      for dirname, _, filenames in os.walk(path):
          for filename in filenames:
              print(os.path.join(dirname, filename))
      

      输出:
      C:\Users\hvasala\Documents\Udemy Course\project\del\1\123.txt
      C:\Users\hvasala\Documents\Udemy Course\project\del\3\123.txt
      C:\Users\hvasala\Documents\Udemy Course\project\del\3\1234.txt

      【讨论】:

        【解决方案3】:

        试试下面的代码:

        import os
        
        def find_file_name(path=None):
            paths = []
            if not path:
                path = os.getcwd()
            for element in os.listdir(path):
                full_path = os.path.join(path, element)        
                if os.path.isdir(full_path):
                    paths += find_file_name(path=full_path)
                else:
                    paths.append(full_path)            
            else:        
                return paths
        def find_file_name(path=None, extention=".pdf"):
            pdf_files = []
            if not path:
                path = os.getcwd()        
            for element in os.listdir(path):
                full_path = os.path.join(path, element)
                file = full_path.split("/")[-1]        
                if os.path.isdir(full_path):
                    pdf_files += find_file_name(path=full_path)
                else:
                    if extention in file:
                        pdf_files.append(file)                              
            return pdf_files
        

        【讨论】:

        • 如何编辑这段代码,我只能保存“pdf”文件。
        • Dagad,我在上面添加了您需要的内容。
        猜你喜欢
        • 2023-04-05
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        • 2016-01-12
        • 2012-10-04
        • 2018-12-27
        相关资源
        最近更新 更多