【问题标题】:Program won't display first line of text when inside for loop在 for 循环中,程序不会显示第一行文本
【发布时间】:2016-12-29 15:42:59
【问题描述】:

我一直在尝试显示文本文件的第一行。这在我使用 readline() 函数时有效,但是当我在 for 循环中使用 readline 函数时它什么也不显示?我尝试在循环外使用 readline 函数,效果很好

AAreasons1 = open("10,000 Reasons.txt", "r") 
alive = open("Alive.txt", "r")
alldays = open("All of My Days.txt", "r")
listsong = [AAreasons1,alive,alldays]
for song in listsong:
    song1 = song.read()
    song2 = (song1.lower())
    print(song.readline())
    song.close()  

另外,这些是每个 txt 文件的第一行

10,000 Reasons.txt - "10,000 Reasons"  
Alive.txt - "Alive"  
All of My Days.txt - "All of My Days"

【问题讨论】:

    标签: python-3.x for-loop


    【解决方案1】:

    当您在文件对象上调用.read() 时,它会完全读取并耗尽它。

    您可以使用song.seek(0) 回到开头然后调用song.readline(),也可以直接使用第一行:song1.split("\n")[0]

    【讨论】:

    • 解决了!谢谢!在旁注中,第一行下方似乎印有空格
    • 有没有办法摆脱它?
    • 每一行都以换行符结尾。要摆脱它,请在您的线路上拨打.strip()
    【解决方案2】:

    逻辑有问题。

    使用这个

    song.read()

    您已阅读所有文件。所以读取文件的头在文件的末尾。 现在当你使用

    song.readline()

    它什么也不打印。

    为了摆脱这种情况,在使用 readline() 之前,再次使用文件头指向文件的开头

    song.seek(0,0)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-09
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多