我正在用Python 2.7编写一个小程序,它从文本文件中读取每行的四个数字,并计算每行的总和
file.txt:
1 2 4 5
5 5 5 12
3 3 89 21
1 0 5 6
我的节目:
def CalcSum(a,b,c,d):
sum = a+b+c+d
return sum
with open('file.txt', 'r') as i_file:
reader = i_file.readline()
sums = []
for row in reader:
sums.append(map(int, row))
for dt in sums:
dt.append(CalcSum(dt[0], dt[1], dt[2], dt[3]))
print sums
i_file.close()
但当我朗读我的程序时,我得到了这个错误:
Traceback(最近一次调用最后一次):文件“/home/Erick/Desktop/testpy.py”,第10行,在sums.append中(map(int,row))ValueError:对于带有基数为10的int()的无效文字: “”
我该如何解决这个错误?提前致谢!!!
1 回答
我想你可能缺少
s
然后用
您正在将
int
应用于文件中的每一行,而不是每个单独的数字 .在代码中进一步向下,你有另一个错误
将总和追加到找到的每个数字列表中 .
最后
不必要地关闭文件,因为它将由
with
语句创建的上下文管理器关闭(这正是with
的目的)所以,要很好地包装它,这里是完整修复的代码
为了使它更加pythonic,让我建议一个替代的,更简洁的整个算法版本
如果文件包含:
final_sums
将举行注意:
readlines()
读取内存中文件的全部内容 . 如果文件很大,那将是不方便的 . 一次读取一行内容更具可扩展性 .