Python理解跳过行的原因
我正在尝试从Python中的输入文件逐行读取,如下所示Python理解跳过行的原因,python,file,input,io,newline,Python,File,Input,Io,Newline,我正在尝试从Python中的输入文件逐行读取,如下所示 in1 = open("input.txt", "r") for i in in1: a1 = in1.readline() print(a1) in1.close() 输入文件包含如下所示的数字: 13245 546464 46516 684186 出于某种原因,它只会每隔一行打印一行,中间有换行符,但我不明白为什么 546464 684186 我希望a1在下一次迭代中先存储“13245\n”,然后存储“546464\
in1 = open("input.txt", "r")
for i in in1:
a1 = in1.readline()
print(a1)
in1.close()
输入文件包含如下所示的数字:
13245
546464
46516
684186
出于某种原因,它只会每隔一行打印一行,中间有换行符,但我不明白为什么
546464
684186
我希望a1在下一次迭代中先存储“13245\n”,然后存储“546464\n”,以此类推直到“684186\n”。如果我使用readlines()而不是readline(),它将跳过初始编号,而将剩余的编号用“\n”存储在列表中
['546464\n', '46516\n', '684186']
为什么会这样?它是否与正在读取的换行符“\n”有关?我知道有其他方法可以逐行读取文件,但我想了解为什么在使用类似结构的其他语言(C++、Java)中这样做时,效果不如预期。这不是要找到代码来执行此操作,而是要理解为什么此代码会以这种方式运行。请尝试:
in1 = open("input.txt", "r")
for i in in1:
print(i)
in1.close()
for循环已经执行了一个readline,因此您每一步执行两次。问题是您在
for
循环中并使用readline
对文件进行了两次迭代。因此,您将打印文件中的每一行
您只能对循环使用:
in1 = open("input.txt", "r")
for a1 in in1:
print(a1)
in1.close()
或者使用readlines()
将所有行作为列表读取并迭代:
in1 = open("input.txt", "r")
for a1 in in1.readlines():
print(a1)
in1.close()
这是因为在文件对象上循环时调用了readline()
。不要那样做。