我正在设置一个脚本,该脚本允许我拥有一个文本文件,其中包含我在主音乐文件夹中拥有的所有歌曲,焊接和子文件夹的名称。
我已经用这种方式编码
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>
我认为我有点需要附加原始字符串,但是我在互联网上检查了一下,但还没有找到解决方案。
答案 0 :(得分:0)
Python uses the default codepage-在您的情况下,这似乎是cp1252。收集的某些路径或文件名包含无法编码为cp1252的字符,因此会出错。
可能的解决方案是:
在写入磁盘时将数据编码为utf-8:open('allFolders.txt', 'w', encoding='utf-8')
(记住从文件中读取时使用UTF-8打开文件)
在运行程序时将PYTHONIOENCODING环境变量设置为UTF-8
在运行程序时设置PYTHONUTF8环境变量