python中多个串联文件的编码有问题吗?
我有一个文件夹,里面有很多西班牙语的python中多个串联文件的编码有问题吗?,python,python-2.7,encoding,character-encoding,Python,Python 2.7,Encoding,Character Encoding,我有一个文件夹,里面有很多西班牙语的.txt文件,我决定将它们合并到一个.txt文件中,如下所示: 导入操作系统 进口舒蒂尔 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:
.txt
文件,我决定将它们合并到一个.txt
文件中,如下所示:
导入操作系统
进口舒蒂尔
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_文件
)不符合字符西班牙语编码,例如concat_文件
中的isdirecci√≥n
而不是dirección
。另一件事是,我在OS X中工作,当我用升华文本打开concat_文件时,它看起来是这样的:0000 0001 2000 0000 0000 0001 4000 0000
当我用文本编辑打开concat_文件时,它看起来就像我想要的,为什么会发生这种情况,我如何解决它 尝试使用编解码器,如下所示:。这将允许您以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问题的详细概述,请参见:
为将来的任何人编辑:在OSX上,您通常可以通过以下方式确定文件的编码
file -I <filename>
文件-I
from.谢谢,这是输出:newchars,decodedbytes=self.decode(数据,self.errors)UnicodeDecodeError:“utf8”编解码器无法解码位置10中的字节0xe8:无效的连续字节
这是否意味着文件不在utf8中?这有点像猜测,如果您还不知道文件是如何编码的。我尝试了utf8、utf16、utf32和ascii。仍然会得到相同的异常。我还能做什么呢?我想cp1252或mac_roman或utf-7是可能的。我的点子快用完了。