将文件夹名称写入文本文件python期间出错

时间:2019-05-05 11:39:33

标签: python python-3.x unicode character-encoding python-unicode

我正在设置一个脚本,该脚本允许我拥有一个文本文件,其中包含我在主音乐文件夹中拥有的所有歌曲,焊接和子文件夹的名称。

我已经用这种方式编码

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 :(得分:0)

在Windows上写入磁盘时,

Python uses the default codepage-在您的情况下,这似乎是cp1252。收集的某些路径或文件名包含无法编码为cp1252的字符,因此会出错。

可能的解决方案是:

  • 在写入磁盘时将数据编码为utf-8:open('allFolders.txt', 'w', encoding='utf-8')(记住从文件中读取时使用UTF-8打开文件)

  • 在运行程序时将PYTHONIOENCODING环境变量设置为UTF-8

  • 在运行程序时设置PYTHONUTF8环境变量