因此,我正在编写一个脚本,该脚本读取一堆文本文件(每首歌曲一个)以获取歌词。它的工作原理是输入一个歌词短语,脚本将扫描所有可用文件的歌词,并告诉您歌曲的名称。问题是斜杠不起作用。我在“ /”和“ \”之间更改了斜杠,但遇到了错误。
使用正斜杠时,会看到以下内容:
“ OSError:[Errno 22]无效的参数:'C:/ Users / [My 名称] /桌面/MusicLyricSearch/AllSongs/Old_Town_Road.txt'“
当我放回斜杠时,我得到了错误:
“ SyntaxError:(unicode错误)'unicodeescape'编解码器无法解码字节 位置3-4:截断\ UXXXXXXXX逃脱”。
我还看到了许多其他有关如何执行此操作的信息,例如: Searching multiple text files for two strings? 和 (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
所以,第一个链接实际上就是代码,但是我得到了错误
“ SyntaxError:(unicode错误)'unicodeescape'编解码器无法解码字节 位置3-4:截断\ UXXXXXXXX逃脱”
第二个解决此问题的链接也没有帮助
这是我的代码:
from os import listdir
lyricSearch = input("Input the phrase from the song: ")
with open("C:/Users/[My Name]/Desktop/MusicLyricSearch/AllSongs/results.txt", "w") as f:
for filename in listdir("C:/Users/[My Name]/Desktop/MusicLyricSearch/AllSongs"):
with open(" C:/Users/Traner/Desktop/MusicLyricSearch/AllSongs/" + filename) as currentFile:
lyrics = currentFile.read()
if(lyricSearch in lyrics):
f.write("The song is", filename)
else:
f.write("Error: Could not find lyrics in any songs")
我希望获得将其更改为我的代码,以便向我显示歌曲歌词的文件名,而不是我得到了错误。
P.S。您可能会说,因为我基本上是复制代码,所以我对使用python进行编码非常陌生。
答案 0 :(得分:0)
from os import listdir
lyricSearch = input("Input the phrase from the song: ")
with open(r"C:\Users\[My Name]\Desktop\MusicLyricSearch\AllSongs\results.txt", "w") as f:
for filename in listdir(r"C:\Users\[My Name]\Desktop\MusicLyricSearch\AllSongs"):
with open(r"C:\Users\Traner\Desktop\MusicLyricSearch\AllSongs\" + filename) as currentFile:
lyrics = currentFile.read()
if(lyricSearch in lyrics):
f.write("The song is", filename)
else:
f.write("Error: Could not find lyrics in any songs")
错误来自\U
,该错误在写入\User
时发生。这作为八字符unicode转义的开始,但是由于您继续使用文件路径,因此python无法解释该转义码并吐出错误。字符串开头的r
强制将其视为原始字符串,因此不考虑Unicode转义。