+ 不支持的操作数类型:'WindowsPath' 和 'str'
Unsupported operand type(s) for +: 'WindowsPath' and 'str'
我正在处理的代码抛出错误 Unsupported operand type(s) for +: 'WindowsPath' and 'str'
。我已经尝试了很多东西,none 已经解决了这个问题(除了删除有错误的行,但这没有帮助)。
对于上下文,此脚本(完成后)应该:
- 根据您输入的 ID 查找文件 (mp3)(在 SongsPath.txt 中指定的目录中)
- 备份
- 然后用另一个文件替换它(重命名为以前文件的名称)
以便获取这些文件的程序播放新歌而不是旧歌,但可以随时恢复到原来的歌曲。 (歌曲是从newgrounds下载的,用他们的newgrounds音频门户ID保存的)
我正在使用 Python 3.6.5
import os
import pathlib
from pathlib import Path
nspt = 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 种不同类型的数据
而不是使用错误行:
csp = str(path sp + "/" + ID + ".mp3")
尝试这样使用它:
csp = str(Path(sp))
fullpath = csp + "/" + ID + ".mp3"
使用 'fullpath' 变量打开文件。
pathlib.Path
使用除法运算符连接路径。不需要转换成字符串再拼接,只需要使用Path
对象的__div__
运算符
csp = sp/(ID + ".mp3")
如果愿意,您也可以使用增广除法来更新 sp
本身。
sp /= ID + ".mp3"
在这两种情况下,您仍然有一个 Path
对象,您可以在脚本的其余部分继续使用它。您的脚本没有理由将其转换为字符串。您可以在 open 调用中使用 Path
对象,或者更好的是,在 Path
对象上使用 open
方法。
csp = sp / (ID + ".mp3")
sr = csp.open("rb")
sw = csp.open("wb")
我正在处理的代码抛出错误 Unsupported operand type(s) for +: 'WindowsPath' and 'str'
。我已经尝试了很多东西,none 已经解决了这个问题(除了删除有错误的行,但这没有帮助)。
对于上下文,此脚本(完成后)应该:
- 根据您输入的 ID 查找文件 (mp3)(在 SongsPath.txt 中指定的目录中)
- 备份
- 然后用另一个文件替换它(重命名为以前文件的名称)
以便获取这些文件的程序播放新歌而不是旧歌,但可以随时恢复到原来的歌曲。 (歌曲是从newgrounds下载的,用他们的newgrounds音频门户ID保存的)
我正在使用 Python 3.6.5
import os
import pathlib
from pathlib import Path
nspt = 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 种不同类型的数据
而不是使用错误行:
csp = str(path sp + "/" + ID + ".mp3")
尝试这样使用它:
csp = str(Path(sp))
fullpath = csp + "/" + ID + ".mp3"
使用 'fullpath' 变量打开文件。
pathlib.Path
使用除法运算符连接路径。不需要转换成字符串再拼接,只需要使用Path
对象的__div__
运算符
csp = sp/(ID + ".mp3")
如果愿意,您也可以使用增广除法来更新 sp
本身。
sp /= ID + ".mp3"
在这两种情况下,您仍然有一个 Path
对象,您可以在脚本的其余部分继续使用它。您的脚本没有理由将其转换为字符串。您可以在 open 调用中使用 Path
对象,或者更好的是,在 Path
对象上使用 open
方法。
csp = sp / (ID + ".mp3")
sr = csp.open("rb")
sw = csp.open("wb")