当前位置: 首页 > 知识库问答 >
问题:

如何在没有此错误的情况下获取正确的文件目录?

凌鹏程
2023-03-14

所以我制作了一个脚本,读取一堆文本文件(每首歌一个)作为歌词。它的工作原理是你输入一个歌词短语,然后脚本扫描所有可用文件中的歌词,并告诉你歌曲的名称。问题是斜杠不起作用。我更改了“/”和“\”之间的斜杠,但遇到了错误。

当我使用正斜杠时,我看到以下内容:

“OSError:[Errno 22]无效参数:'C:/Users/[My Name]/Desktop/MusicLyricSearch/AllSongs/Old_Town_Road.txt'”

当我放回斜杠时,我得到了错误:

“SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码位置3-4:截断\UXXXXXXXX转义”中的字节。

我看过很多其他关于如何做到这一点的帖子,比如:在多个文本文件中搜索两个字符串?和(unicode错误)'UnicodeScape'编解码器无法解码位置2-3处的字节:截断\UXXXXXXXX转义

所以,第一个链接实际上是代码,但我得到了错误

msgstr"语法错误:(Unicode错误)'Unicodescape'编解码器无法解码位置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")

我希望得到的代码,以改变我的,它显示我的歌词文件名,而我得到的错误。

另外,正如你可能知道的那样,因为我基本上是复制代码的,所以我对用python编码相当陌生。

共有1个答案

胡高朗
2023-03-14
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")

错误来自写入\User时发生的\U。这将作为8个字符的unicode转义的开始,但由于您继续使用文件路径,python无法解释该转义代码并抛出错误。字符串开头的r强制将其视为原始字符串,因此不考虑unicode转义。

 类似资料:
  • 我想使用POST动词在带有flask restplus的VM上执行操作,但当没有主体时,它总是导致400。 结果是400{“消息”:“浏览器(或代理)发送了一个此服务器无法理解的请求。” 如果我只是简单地从post转换为get,它就可以正常工作。但是,我真的想使用POST动词,因为这是我需要遵循的标准动词,用于自定义非CRUD操作。我有没有用flask restplus把自己画到角落里? 注意:对

  • 问题内容: 我需要将一堆列名称解析为列索引(以便使用一些不错的方法)。但是,我知道如何获取对象的唯一方法是调用some 。 我的问题是,获取ResultSet会占用我不必要的资源-我真的不需要查询表中的数据,我只需要一些有关表的信息。 有谁知道以任何方式获取对象而不先获取(可能来自巨大表)的对象吗? 问题答案: 也许你可以使用 它为每个表列返回一行。 在这种情况下,您将使用返回的本身,而不是其。

  • 问题内容: 我正在尝试编写一个执行脚本;但是,如果没有要提交的内容,则git会退出,状态为。部署脚本将其视为不成功,然后退出。我确实想检测 实际 要提交的故障,因此我不能仅仅给Fabric全面忽略故障。如何允许忽略空提交故障,以便部署可以继续进行,但仍然可以捕获实际提交失败时导致的错误? 问题答案: 通过检查git diff?的退出代码来预先捕获此条件。 例如(在shell中): 编辑:根据霍尔格

  • 问题内容: 在C#中,我们有和有或没有命名空间(包在Java世界中)得到一个类型(类在这种情况下)的名称。 java等于什么? 显然,有比手动使用和删除软件包名称更好的方法。 问题答案: 返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回一个空字符串。 数组的简单名称是组件类型的简单名称,后接“ []”。特别是其组件类型为匿名的数组的简单名称为“ []”。 它实际上是从名称中删除软件包

  • 我想查看项目中的所有类,当我找到一个从“City”派生的类时,我想创建一个该类型的新对象并将其添加到列表中。这允许我添加功能,而无需更新列表。最重要的是,我想在不使用任何库的情况下完成它。我已经找到了类似的主题,但他们使用了org。反思。我希望避免以下情况:

  • 问题内容: 我怎么能包括为没有MANIFEST.in文件? 我的setup.py看起来像这样: 版本: 我就是无法加入。 还是此博客文章仍然正确? http://blog.codekills.net/2011/07/15/lies,-more-lies-and-python-packaging- documentation-on– package_data-/ 不过,在过去的一个小时中,我了解到这