我有一个包含许多西班牙语.txt
文件的文件夹,我决定将它们合并到一个.txt
文件中,如下所示:
导入操作系统 import shutil
def concatFiles():
path = '/Users/user/Desktop/OpinionsTAG_txt/'
files = os.listdir(path)
with open("/Users/user/Desktop/concat_file.txt", "wb") as fo:
for f in files:
with open(os.path.join(path, f), "rb") as fi:
shutil.copyfileobj(fi, fo)
if __name__ == "__main__":
concatFiles()
问题是输出(即concat_file
)不尊重字符西班牙语编码,例如在concat_file
dirección
而不是dirección
。另一件事是我在OS X中工作,当我用升华文本打开concat_file
它看起来像这样:0000 0001 2000 0000 0000 0001 4000 0000
当我用文本编辑打开concat_file
它看起来像我想要,为什么会发生这种情况,我该如何解决呢?
答案 0 :(得分:1)
尝试使用编解码器,如下所示:https://stackoverflow.com/a/19591815/4339369。这将允许您以UTF-8的形式读取和写入文件,这可以解决您的问题。
import codecs
import os
import shutil
def concatFiles():
path = '/Users/user/Desktop/OpinionsTAG_txt/'
files = os.listdir(path)
with codecs.open("/Users/user/Desktop/concat_file.txt", "wb",encoding='utf8') as fo:
for f in files:
with codecs.open(os.path.join(path, f), "rb",encoding='utf8') as fi:
shutil.copyfileobj(fi, fo)
if __name__ == "__main__":
concatFiles()
可以在此处找到Python 2.x中Unicode问题的一个很好的概述:http://nedbatchelder.com/text/unipain.html。
将来为任何人编辑:在OS X上,您通常可以通过
确定文件的编码file -I <filename>