【发布时间】:2022-09-28 00:58:25
【问题描述】:
我需要 Python 执行以下操作:
- 打开文件夹。
- 查找具有 \".txt\" 格式的文件
- 打开找到的文件。
- 从每个文件中读取一行并添加数字。
- 执行步骤 4 直到文件结束(5 行)。
- 将获得的数字除以打开的文件数(获取平均成绩)。
- 将结果写入同一文件夹中的“finish.txt”文件中。
我写了一个代码,但它不起作用。如果你能解决它,请做。 您也可以通过另一个代码解决我的问题。
import os path = str(os.path.dirname(__file__))+\"\\\\files\" os.chdir(path) def sl (fp): path = str(os.path.dirname(__file__))+\"\\\\files\" L=len([name for name in os.listdir(path) if os.path.isfile(os.path.join(path, name))]) if L: if file.endswith(\".txt\"): Length=L else: Length=1 finish=open(os.path.dirname(__file__)+\"\\\\finish.txt\", \"w\") Sum1=0 Sum2=0 Sum3=0 Sum4=0 Sum5=0 with open(file_path, \'r\') as fp: line_numbers = [0, 1, 2, 3, 4] lines = [] for i, line in enumerate(fp): if i in line_numbers: lines.append(line.strip()) if i==0: Sum1+=int(line) if i==1: Sum2+=int(line) if i==2: Sum3+=int(line) if i==3: Sum4+=int(line) if i==4: Sum5+=int(line) elif i > 4: break Write=str(int(Sum1/Length))+\"\\n\"+str(int(Sum2/Length))+\"\\n\"+str(int(Sum3/Length))+\"\\n\"+str(int(Sum4/Length))+\"\\n\"+str(int(Sum5/Length))+\"\\n\" finish.write(Write+str((Sum1+Sum2+Sum3+Sum4+Sum5)/Length)) finish.close() # iterate through all file for file in os.listdir(): # Check whether file is in text format or not if file.endswith(\".txt\"): file_path = f\"{path}\\{file}\" sl(file_path)
-
不清楚你想要什么。你想要所有线路 1 的平均值,然后是所有线路 2 的平均值,然后是所有线路 3 的平均值,等等?如果是这样,那么您必须收集所有文件的总和。在阅读完每个文件之前,您无法打印任何结果。
标签: python python-3.x for-loop math txt