2 回答
TA贡献1830条经验 获得超9个赞
恐怕你的问题不是很清楚,但我想你想要这样的
import os
N = 6
# P = 10 # ????
def calculate_output(N, P):
output = []
for i in range(N):
dirname = "./Folder00" + str(i+1)
for filename in os.listdir(dirname):
probsum = 0
if filename.endswith(".csv"):
with open(os.path.join(dirname, filename) as csv:
for line in csv:
pass
# line now contains last line
probsum += int(line.rstrip('\n').split(',')[-1])
output.append(probsum)
return output
如果每个文件夹中有 10 个 CSV 文件,那么您实际上不需要任何参数 P;但我不完全确定我猜对了你的代码应该在这里做什么。以上只是从每个文件的最后一行中获取最后一个逗号分隔的字段,并将字符串转换为数字。该函数返回每个文件夹中数字总和的列表。
如果文件很大,也许可以考虑优化获取最后一行的逻辑。如果您知道或可以合理地猜测最后一行可以有多长,请从文件末尾找回多少字节;参见例如使用 Python 获取文件的最后 n 行,类似于 tail
如果 CSV 格式有引用字段之类的复杂性,请使用csvreader而不是尝试简单地以逗号分隔。
TA贡献1820条经验 获得超2个赞
万分感谢!我在这个解决方案中稍微修改了您的解决方案:
N = 6
def calculate_output(N):
output = []
for i in range(N):
prob = []
dirname = "./Folder00" + str(i+1)
for filename in os.listdir(dirname):
if filename.endswith(".csv"):
with open(os.path.join(dirname, filename)) as csv:
for line in csv:
pass
# line now contains last line
prob.append(int(line.rstrip('\n').split(',')[-1]))
output.append(sum(prob))
return output
它工作正常。
添加回答
举报