Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python理解跳过行的原因_Python_File_Input_Io_Newline - Fatal编程技术网

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\

我正在尝试从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\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()
。不要那样做。