为什么python中readline无法读取文件的第一行?

为什么python中readline无法读取文件的第一行?

问题描述:

python中通过readline读取文件无法读取第一行,请大神解惑

代码如下:

os.getcwd()
os.chdir('D:\\AutoTest\\Automated_test_platform\\tests\\myscript\\results')
with open('poetry.txt', 'r', encoding='utf-8') as data:
    for each_line in data:
        print(data.readline(), end='')

文件内容:
关雎
[先秦] 诗经
关关雎鸠,在河之洲。
窈窕淑女,君子好逑。

参差荇菜,左右流之。
窈窕淑女,寤寐求之。

求之不得,寤寐思服。
悠哉悠哉,辗转反侧。

参差荇菜,左右采之。
窈窕淑女,琴瑟友之。

参差荇菜,左右芼之。
窈窕淑女,钟鼓乐之。

运行结果:
图片说明

你都已经遍历each_line变量了,为什么还要输出data.readline(),直接pirnt(each_line)不行吗

for line in file:
    # Todo

的意思是

while file文件未结束:
    line = file.readline()
    # Todo

所以你的代码就等价于

while data文件未结束:
    each_line = data.readline()
    print(data.readline())

我相信你能看出问题在哪。
其次,看输出结果麻烦仔细点,你这不仅仅是第一行没输出,整首诗就输出了一部分,再仔细看还能看出是一半,这时候应该已经能知道是哪方面问题了,仔细想想再问。

for eachline和data.readline()都有逐行往后移动data内文件指针的功能,重复移动最终结果是隔行输出,改成:

for each_line in data:
        print( each_line, end='')

print(data.read())