Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中多个串联文件的编码有问题吗?_Python_Python 2.7_Encoding_Character Encoding - Fatal编程技术网

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_文件
中的is
direcció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是可能的。我的点子快用完了。