Как я могу получить правильный каталог файлов без этой ошибки? - PullRequest
0 голосов
/ 06 мая 2019

Итак, я делаю сценарий, который читает несколько текстовых файлов (по одному на каждую песню) для текстов песен. Как это работает, вы вводите лирическую фразу, а сценарий сканирует все доступные файлы для этой лирики и сообщает вам название песни. Проблема в том, что косые черты не работают. Я изменяю косую черту между "/" и "\", но сталкиваюсь с ошибками.

когда я использую косую черту, я вижу следующее:

"OSError: [Errno 22] Недопустимый аргумент: 'C: / Users / [My Имя] /Desktop/MusicLyricSearch/AllSongs/Old_Town_Road.txt '"

когда я возвращаю косую черту, я получаю ошибку:

"SyntaxError: (ошибка Unicode) кодек unicodeescape не может декодировать байты в положении 3-4: усеченный \ UXXXXXXXX escape ".

Я видел много других сообщений о том, как это сделать, например: Поиск нескольких текстовых файлов по двум строкам? а также (ошибка Unicode) Кодек unicodeescape не может декодировать байты в позиции 2-3: усеченный \ UXXXXXXXX escape

Итак, первая ссылка действительно является кодом, но я получаю ошибку

"SyntaxError: (ошибка Unicode) кодек unicodeescape не может декодировать байты в положении 3-4: усеченный \ UXXXXXXXX escape "

Вторая ссылка для решения этой проблемы тоже не помогла

Это мой код:

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.

1 Ответ

0 голосов
/ 06 мая 2019
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 не может интерпретировать этот escape-код и выдает ошибку.r в начале строки заставляет ее обрабатывать как необработанную строку, и, следовательно, экранирование Юникода не рассматривается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...