递归返回特定.txt文件的所有路径的列表

问题描述 投票:1回答:1

我正在编写一个函数list_files_walk,该函数使用parts.txt模块的os函数返回目录中所有walk文件的路径的列表。

def list_filess_walk():
    for dirpath, dirnames, filenames in os.walk("CarItems"):
        if 'parts.txt' in dirpath:
            list_files.append(filenames)
            print(list_files)
    return list_files

当前,list_files仍为空。输出应该看起来像这样:

CarItems/Chevrolet/Chevelle/2011/parts.txt
CarItems/Chevrolet/Chevelle/1982/parts.txt

如何产生此输出?

python-3.x list file directory
1个回答
0
投票

您在这里几乎拥有它–我唯一要做的调整是:

  • 确保list_files在本地作用于函数。
  • 使用参数,以便函数可以在任何路径上使用。
  • 使用yield关键字返回一个生成器,该生成器允许延迟获取下一个文件。
  • 如果文件名恰巧是路径中其他位置的子字符串,则
  • parts.txt in dirpath可能容易出错。我会使用endswith或遍历dirnames,这是当前目录中所有项目的列表。

这里是一个例子:

import os

def list_files_rec(path, fname):
    for dirpath, _, _ in os.walk(path):
        if dirpath.endswith(fname):
           yield dirpath

if __name__ == "__main__":
    print(list(list_files_rec("CarItems", "parts.txt")))
© www.soinside.com 2019 - 2024. All rights reserved.