Python - 希伯来语编码问题
我正在尝试把一个文件夹里的多个希伯来语的.txt文件合并成一个文件。希伯来语的编码是cp1255。我已经指定了编码,所以打开文件是成功的,但在尝试把字符串写入文件时,编码就出问题了。
如果我在打开文件时不指定编码,打开操作就会失败(在第7行)。
dirLoc="source/folder"
import os
files=os.listdir(dirLoc)
for f in files:
if f.endswith('.txt'):
print(f)
data=open(dirLoc+'/'+f, 'r', encoding="cp1255")
out=open("outPut.txt", 'a')
for line in data:
out.write(line)
data.close()
out.close()
我遇到的错误是常见的错误信息: UnicodeDecodeError: 'charmap' 编解码器无法解码位置Y的字节X:字符映射到未定义的内容。
补充:经过进一步尝试,问题似乎确实出在把希伯来语字符串写入.txt文件上。即使我把文件另存为其他格式(比如ANSI或utf-8),并相应地更改编码,问题依然存在。而用英文的.txt文件则没有问题。
1 个回答
1
好的,经过一天的尝试,我找到了一个解决办法,如下所示:
dirLoc='source/folder'
import os
import codecs
files=os.listdir(dirLoc)
for f in files:
if f.endswith('.txt'):
data=codecs.open(dirLoc+'/'+f, 'r+', encoding='utf8')
try:
data1=data.read()
out=codecs.open(dirLoc+'/outPut.txt', 'a+', encoding='utf8')
try:
out.write(data1)
except:
print('file ' +f+ ' failed to write')
except:
print('file '+f+' failed to read')
out.close()
data.close()
codecs.open
这个函数让我可以在写入和读取文件时指定编码方式。注意,你需要先导入 codecs
才能使用它。出现异常的原因是编码仍然可能出问题,有时会有文件导致异常。使用 try 语句可以让我跳过那些无法读取或写入的文件,而不会导致整个程序崩溃。