获取子目录中文件的绝对路径

时间:2020-05-28 12:24:47

标签: python file path

我有一个包含其他目录的目录。这些子目录中的每一个都有我需要绝对路径的文件。例如,假设父目录为/ 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)。有没有办法使用其中的子目录来做到这一点?

3 个答案:

答案 0 :(得分: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']

答案 1 :(得分:0)

在下面尝试此代码:

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

答案 2 :(得分:0)

是的。您可以尝试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

相关问题