首页 > 解决方案 > 为特定文件扩展名搜索目录并执行求和以将其内容添加在一起的后续操作

问题描述

这是我一篇文章的后续。本质上,这个想法是将所有以 .math 结尾的文件的内容添加到 /home/pi/math 中。目录。目前我有 3 个文件:test.math、hello.math、hi.math - 它们都至少有 1.00。问题是 1. 它似乎没有正确读取文件的内容,也没有添加它们。

这个想法是它将添加这 3 个文件(最终我想将它们添加到一个变量中)并显示总数。请注意,我确实想包括花车。

import os

srcdir = "/home/pi/math/"
files = os.listdir(srcdir)


def sum_file_contents():
    value = float()
    for file in srcdir:
      if file.endswith(('math')):
          value += float(open(file, "r").read().strip())
      return value

for file in files:
    if file.endswith(('math')):
       print(file)
       print(sum_file_contents())

输出

test.math
0.0
hello.math
0.0
hi.math
0.0

标签: python-3.xfilesum

解决方案


您的主for循环遍历files来自 的os.listdir(srcdir),但随后您sum_file_contents()尝试再次执行相同的操作,只是它以字符串的形式遍历srcdir,这自然不会为您提供目录列表。主for循环是多余的,你应该通过在迭代它时sum_file_contents()调用来简单地修复它:os.listdir()

import os

srcdir = "/home/pi/math/"

def sum_file_contents():
    value = float()
    for file in os.listdir(srcdir):
      if file.endswith(('math')):
          value += float(open(os.path.join(srcdir, file), "r").read().strip())
    return value
print(sum_file_contents())

推荐阅读