如何使用walk函数为每个文件返回最深的目录名和文件名?

时间:2019-04-27 20:44:05

标签: python

我编写了一个函数,该函数在遍历搜索后返回文件的绝对路径。

但是如何仅返回每个文件的最后一个文件夹名和文件名(结合使用)?

例如,我有3个文件:

  • “ D:\ python \ demo_project \ dir1 \ dir2 \ dir3 \ file1.sql”

  • “ D:\ python \ demo_project \ dir1 \ dir2 \ file2.sql”

  • “ D:\ python \ demo_project \ dir1 \ file3.sql”

结果应为:

  • dir3 \ file1.sql

  • dir2 \ file2.sql

  • dir1 \ file3.sql

def find_sql(main_dir):
    arr = []
    for dirpath, subdirs, files in walk(main_dir):
        arr.extend(path.join(dirpath, x) for x in files if x.endswith(".sql"))

    return arr

call_find_sql = find_sql("D:\\python\\demo_project")

1 个答案:

答案 0 :(得分:1)

os.path.basename上使用dirpath

例如,它将'D:\\python\\demo_project\\dir1\\dir2\\dir3'转换为'dir3'

from os import walk, path

def find_sql(main_dir):
    arr = []
    for dirpath, subdirs, files in walk(main_dir):
        arr.extend(
            path.join(path.basename(dirpath), x)
            for x in files
            if x.endswith(".sql")
            )
    return arr