Python脚本可在目录中搜索某些文件类型,然后将其内容附加在一起

时间:2018-08-02 20:15:16

标签: python-3.x file add

我正在尝试制作一个python脚本,该脚本将在目录中搜索所有以特定文件扩展名.math结尾的文件(基本上是其中包含数字的文本文件)。

我该怎么做?

假设我有hello.math,hello2.math和goodbye.math文件

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

我希望脚本在当前目录中搜索所有.math文件,然后对其进行汇总。

1 个答案:

答案 0 :(得分:1)

因此不确定是否要递归搜索目录结构,还是只列出一个目录中的文件。这应该可以帮助您。

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())

有些事情...。首先,在条件名称条件中,您需要选择single_dir或递归函数,并指定路径入口点(例如/ dir或C:\ dir或其他名称)。如果文件中除了int以外的任何内容,sum_file_contents都会失败。尽管您的示例说明了这就是您想要的。

总而言之,如果您在提出问题之前先尝试一下,那就太好了。我认为整个社区不是在为您编写代码,而是在遇到困难时为您提供帮助。这是一个非常简单的问题。如果您在google中找到目录中的文件,我敢打赌,实际上有数十种答案,这至少可以为您提供代码示例的基础。然后您可以说我可以找到我的.math文件,我该如何对它们进行汇总?您可能也可以找到答案。请注意,我不会对本段不礼貌。

注意:我没有测试这段代码