用于搜索特定文件类型的目录的Python脚本,然后将其内容附加到一起

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (45)

我正在尝试创建一个python脚本,它将在目录中搜索以特定文件扩展名为.math结尾的所有文件(基本上是一个带有数字的文本文件)。

我该如何处理呢?

想象一下,我有文件hello.math,hello2.math和goodbye.math

让我们说hello.math有10,hello2.math有3,goodbye.math有0。

我希望脚本搜索当前目录中的所有.math文件然后总结它们。

提问于
用户回答回答于

所以不确定是否要递归搜索目录结构,或只是在一个目录中列出文件。这应该让你去。

import os

MATH_FILES = list()

def single_dir(name)
    global MATH_FILES
    names = [os.path.join(name, item) for item in os.listdir(name)]
        for name in names:
           if ".math" in name and os.path.isfile(name):
               print("%s has .math in the name" % name)
               MATH_FILES.append(name)

def recursive(name):
    global MATH_FILES
    if ".math" in name and os.path.isfile(name):
        print("%s has .math in the name" % name)
        MATH_FILES.append(name)
    try:
        names = [os.path.join(name, item) for item in os.listdir(name)]
        for name in names:
            recurse(name)
    except:
        # Can't listdir() a file, so we expect this to except at the end of the tree.  
        pass

def sum_file_contents():
    value = int()
    for file in MATH_FILES:
        value += int(open(file, "r").read().strip())
    return value

if __name__ == "__main__":
    # Choose implemntation here
    # recursive("<insert base path here>")
    # single_dir("<insert base path here>")
    print(sum_file_contents())

所以有些东西......首先在if name条件中你需要选择single_dir或递归函数,并指定一个路径入口点(比如/ dir或C:\ dir或者其他)。如果文件中没有int,则sum_file_contents将失败。虽然你的例子说明了你正在寻找的东西。

总之,如果你在提出问题之前尝试一下,那将是一件好事。我认为整个社区不是为你编写代码,而是为了帮助你,如果你遇到困难。这是一个非常简单的问题。如果你谷歌在一个目录中找到文件,我打赌有几十个答案,这至少会给你一个代码示例的基础。然后你可以说我可以找到这样的.math文件,如何总结它们?你也许可以找到答案。请注意我不想对这一段不礼貌。

注意:我没有测试此代码

扫码关注云+社区

领取腾讯云代金券