0
我想读取整个文件“all_years.txt”。 (全年/字母/单词),逐行,并计算一年是闰年。如果是这样,我想将该行写入一个名为“leap_years.txt”的空文件中。我的循环中有错误吗?
# calculation function
def leapYear(year):
""" Calculates whether a year is or isn't a leap year. """
year = int(year)
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
# main function
def main():
try:
file_1 = open("all_years.txt", "r") # open file
lines = file_1.readlines()
file_1.close()
file_2 = open("leap_years.txt", "a") # open file
for line in lines:
if line.isdigit():
if leapYear(line):
file_2.write(line)
file_2.close()
except ValueError as e:
print(e)
main()
此代码其实,读的第一个文件,并打印到其他空文件,但只打印出“6464”,这是对“all_years.txt”文件的最后一行。为什么只坐着打印最后一个文件?
它应该忽略文件中的所有字母。 这是最后20行左右看的“all_years.txt”文件的内容:
Lemming
2500
xyzw
2100
2101
2102
love
hate
3232
2054
2.71828
6504
6500
4242
1522
0.68
3333
666
325
1066
6464
我应该说,文本之间的每一个空间上的文件一个新行......所以基本上你所看到的竖版。 – forumer444
使用'line.strip()。isdigit()'删除行中的分隔符\ n或空格,可能是这个问题 – kip
因为只有字符串中的所有字符都是数字,isdigit才为真。空格和行结尾不是数字。你也没有真正的逐行阅读原始文件,但这可能并不重要,除非文件变大。 – pvg