萧径亭
2019-08-26 15:19
采纳率: 100%
浏览 2.6k

为什么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='')

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

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

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

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

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

运行结果:
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • JonathanYan 2019-08-26 15:43
    已采纳

    你都已经遍历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())
    

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

    点赞 4 打赏 评论
  • HideInTime 2019-08-26 15:51

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

    for each_line in data:
            print( each_line, end='')
    
    点赞 2 打赏 评论
  • 繁华三千东流水 2019-08-26 16:00

    print(data.read())

    点赞 打赏 评论

相关推荐 更多相似问题