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)
这里有两个关键错误:
- 你用了
"a"(追加)模式打开文件,但我们需要的是读取内容,应该用"r"(只读)模式。 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
相关产品推荐
相关产品推荐

