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