为了账号安全,请及时绑定邮箱和手机立即绑定

+ 不支持的操作数类型:“WindowsPath”和“str”

+ 不支持的操作数类型:“WindowsPath”和“str”

鸿蒙传说 2022-07-05 17:12:07
我正在处理的代码会引发错误Unsupported operand type(s) for +: 'WindowsPath' and 'str'。我已经尝试了很多东西,但没有一个可以解决这个问题(除了删除有错误的行,但这没有帮助)。对于上下文,此脚本(完成后)应该:根据您输入的ID(在SongsPath.txt中指定的目录中)查找文件(mp3)把它备份然后用另一个文件替换它(重命名为上一个文件的名称)以便获取这些文件的程序播放新歌曲而不是旧歌曲,但可以随时恢复到原始歌曲。(歌曲是从 newgrounds 下载的,并通过他们的 newgrounds 音频门户 ID 保存)我正在使用 Python 3.6.5import osimport pathlibfrom pathlib import Pathnspt = open ("NewSongsPath.txt", "rt")nsp = Path (nspt.read())spt = open("SongsPath.txt", "rt")sp = (Path(spt.read()))print("type the song ID:")ID = input()csp = str(path sp + "/" + ID + ".mp3") # this is the line throwing the error.sr = open(csp , "rb")sw = open(csp, "wb")print (sr.read())
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

发生的事情是您使用“+”字符连接 2 种不同类型的数据

而不是使用错误行:

csp = str(path sp + "/" + ID + ".mp3")

尝试以这种方式使用它:

csp = str(Path(sp))
fullpath = csp + "/" + ID + ".mp3"

使用 'fullpath' 变量打开文件。


查看完整回答
反对 回复 2022-07-05
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

pathlib.Path使用除法运算符连接路径。无需转换为字符串再连接,只需使用Path对象的__div__操作符即可


csp = sp/(ID + ".mp3")

如果您愿意,也可以使用增强除法来更新sp自身。


sp /= ID + ".mp3"

在这两种情况下,您仍然有一个Path可以在脚本的其余部分继续使用的对象。您的脚本没有理由将其转换为字符串。您可以Path在 open 调用中使用该对象,或者更好地使用open该对象上的方法Path。


csp = sp / (ID + ".mp3")

sr = csp.open("rb")

sw = csp.open("wb")


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 187 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号