我有一些代码可以查看单个文件夹并提取文件。
但现在文件夹结构发生了变化,我需要在文件夹中寻找匹配的文件。

旧代码是什么样的

GSB_FOLDER = r'D:\Games\Gratuitous Space Battles Beta'

def get_module_data():
    module_folder = os.path.join(GSB_FOLDER, 'data', 'modules')

    filenames = [os.path.join(module_folder, f) for f in
                  os.listdir(module_folder)]

    data = [parse_file(f) for f in filenames]

    return data

但是现在文件夹结构变成了这个样子
  • GSB_FOLDER\data\modules
  • \folder1\data\modules
  • \folder2\data\modules
  • \folder3\data\modules

  • 其中文件夹 1、2 或 3 可以是任何文本字符串

    我如何重写上面的代码来做到这一点...
    有人告诉我 os.walk 但我只是在学习 Python ......所以任何帮助表示赞赏

    最佳答案

    您只需调用 os.walk 并没有太大变化,它将递归地遍历目录并返回文件,例如

    for root, dirs, files in os.walk('/tmp'):
        if os.path.basename(root) != 'modules':
            continue
        data = [parse_file(os.path.join(root,f)) for f in files]
    

    在这里,我只检查名为“模块”的文件夹中的文件,您可以更改该检查以执行其他操作,例如在某处有模块的路径 root.find('/modules') >= 0

    关于python - os.walk 爬取文件夹结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13131497/

    10-11 23:18
    查看更多