我想要汇总文件中的所有数字。 我写了两个解决问题的解决方案,如下所示。
import sys
import re
if len(sys.argv) != 2:
print("Need 2 parameters!")
quit(2) # 2 for command line error
# 0 for normal quit
# 1 for all other kinds of error
if sys.argv[1] == "sample" :
f = open("regex_sum_42.txt", "r")
else:
f = open("regex_sum_89382.txt", "r")
#Solution1:
total = 0
for line in f :
line_num = re.findall("[0-9]+", line)
total = total + sum([int(each) for each in line_num])
print(total)
print("******************")
print(f.read())
#Solution2:
print(sum([int(each) for each in re.findall( "[0-9]+" ,f.read())]))
我认为输出是
511355
******************
(something that is file content)
511355
然而,输出是
511355
******************
0
我确保两种解决方案都是正确的。如果我单独运行两个解决方案,则输出为511355。
但是,当我一起运行它们时,解决方案2的结果是0.我试图在解决方案1之后打印f并且它什么也没有。有人知道为什么吗?