You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3播放列表生成器查看功能异常问题求助

解决播放列表查看时输出文件对象而非内容的问题

嗨,我看到你的问题了——你代码里查看播放列表的部分出了点小问题,直接打印了文件对象而不是里面的内容。让我给你拆解一下问题和解决办法:

问题根源

你这段查看播放列表的代码:

view = input("Which playlist would you like to view? Please enter the number you were given before.")
with open("playlist" + str(view) + ".txt", "a") as see:
    print(see)

这里有两个关键错误:

  1. 你用了"a"(追加)模式打开文件,但我们需要的是读取内容,应该用"r"(只读)模式。
  2. print(see)打印的是文件对象本身,也就是那个<_io.TextIOWrapper...>的东西,而不是文件里的内容。要获取内容,你需要调用文件对象的read()方法。

修正后的代码

把查看部分改成这样:

view = input("Which playlist would you like to view? Please enter the number you were given before.")
try:
    # 用只读模式打开文件
    with open(f"playlist{view}.txt", "r") as see:
        # 读取全部内容并打印
        playlist_content = see.read()
        print("你的播放列表内容:\n", playlist_content)
except FileNotFoundError:
    print(f"抱歉,找不到编号为{view}的播放列表!")

我还加了try-except块来处理用户输入错误编号的情况,避免程序直接崩溃,这是个小优化。

额外的优化建议

顺便提几个可以让你的代码更健壮的小改进:

  • 歌曲列表的打印可以用循环,不用手动写1到20:
    for idx, song in enumerate(songs[:20], 1):
        print(f"{idx}. {song.strip()}")
    
    这样不管songs.txt里有多少歌,都能自动按序号打印前20首,还能去掉每行末尾的换行符。
  • 处理用户输入的大小写:比如把输入转成小写再判断,比如cont = input(...).lower(),这样用户输入Y或者y都能识别。
  • 对用户输入的歌曲编号做范围检查,比如确保输入的是1-20之间的数字,避免索引越界报错。

这样修改后,查看播放列表的时候就能正常显示里面的歌曲内容啦!

内容的提问来源于stack exchange,提问作者DamnDamnPythonIsHard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:33:43