ошибка при записи имен папок в текстовый файл python - PullRequest
0 голосов
/ 05 мая 2019

Я настраиваю скрипт, который позволяет мне иметь текстовый файл со всеми названиями песен, припоями и подпапками, которые у меня есть в моей основной музыкальной папке.

Я закодировал это таким образом

import os
folderNames=[]
subFolders=[]
filenames=[]
for folder_names, subfolder_names, file_names in 
    os.walk(r'C:\Users\Patrick\Desktop\Musica'):
    folderNames.append(folder_names)
    openFolderNames=open('allFolders.txt', 'w')
    openFolderNames.write(str(folderNames))

    for subfolder_name in subfolder_names:
        subFolders.append(subfolder_name)
        opensubfolders=open('allSubfolders.txt', 'w')
        opensubfolders.write(str(subFolders))
    for file_name in file_names:
        filenames.append(file_name)
        openfilenames=open('filenames.txt', 'w')
        openfilenames.write(str(filenames))
print('Done!!!')

, и это дает мне такую ​​ошибку:

Traceback (most recent call last):
File "C:\Users\Patrick\Desktop\My Python Programs\Chapter9\walkingDirectoryTree\walkingDirectoryTree.py", line 17, 
in <module> openfilenames.write(str(filenames))
File "C:\Users\Patrick\AppData\Local\Programs\Python\Python37-32\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u0107' in 
position 7974: character maps to <undefined>

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

1 Ответ

0 голосов
/ 05 мая 2019

Python использует кодовую страницу по умолчанию при записи на диск в Windows - в вашем случае это выглядит как cp1252.Некоторые из собираемых путей или имен файлов содержат символы, которые не могут быть закодированы как cp1252, поэтому возникает ошибка.

Возможные решения:

  • кодировать данные как utf-8при записи на диск: open('allFolders.txt', 'w', encoding='utf-8') (не забудьте открыть файлы с помощью UTF-8 при чтении с них)

  • установить для переменной среды PYTHONIOENCODING значение UTF-8при запуске вашей программы

  • установите переменную окружения PYTHONUTF8 при запуске вашей программы

...