首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么.txt列表的第一首歌没有被读?

为什么.txt列表的第一首歌没有被读?
EN

Stack Overflow用户
提问于 2022-02-25 10:43:43
回答 1查看 22关注 0票数 0

我的.txt文件第一首歌是刀党互联网之友,第二首歌是加兰提斯-更大声,更难,更好。但是我的代码只输出第二首歌。为什么会这样呢?

代码语言:javascript
复制
##5.4 Jukebox
failinimi = input("Sisesta failinimi: ")
 
if failinimi == "jukebox.txt":
    failinimi = "ut/jukebox.txt"
elif failinimi == "80ndad.txt":
    failinimi = "ut/80ndad.txt"
elif failinimi == "eesti_muusika.txt":
    failinimi = "ut/eesti_muusika.txt"
else:
    failinimi = "ut/edm.txt"
 
album = open(failinimi, encoding = "UTF-8")

järg = 1

for lugu in album:
    album_sisu = album.readline()
    while album_sisu != "":
        järg += 1
        print("{}. {}".format(järg, album_sisu.strip()))
        album_sisu = album.readline()
album.close
代码语言:javascript
复制
>>> %Run ut.py
Sisesta failinimi: s
1. Galantis - Louder, Harder, Better
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-25 10:49:35

您已经在逐行迭代文件行,但也执行了album.readline(),这将丢弃前一行。没有必要:

代码语言:javascript
复制
with open(failinimi, encoding = "UTF-8") as album:

    järg = 1

    for lugu in album:
        if lugu != "":
            järg += 1
            print("{}. {}".format(järg, lugu.strip()))

如果可以使用with open(...,则不需要关闭该文件

还可以简化文件名的处理:

代码语言:javascript
复制
failinimi = input("Sisesta failinimi: ")
 
if failinimi in ["jukebox.txt", "80ndad.txt", "eesti_muusika.txt"]:
    failinimi = "ut/" + failinimi 
else:
    failinimi = "ut/edm.txt"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71264623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档