Python抛出UnicodeDecodeError

时间:2013-12-24 13:26:22

标签: python

我正在使用python 2.6,从我读到的,读取二进制文件将导致字符串,但我无法使用B“\ r \ n”字符串连接字符串。我搜索过,但大多数结果是连接UTF字符串,而我的情况是连接二进制字符串

下面的代码工作正常,直到行体=“\ r \ n”.join(行),假设行是包含普通ASCII字符串和从文件读取的二进制内容的列表,当它们连接在一起时抛出UnicodeDecodeError,如何使用字符串加入二进制数据?以下代码用于将文件上传到网站。

        def get_content_type (filename):
            return mimetypes.guess_type(filename)[0] or 'application/octet-stream'

        def encode_field (field_name):
            return ('--' + boundary,
                    'Content-Disposition: form-data; name="%s"' % field_name,
                    '', str (data [field_name]))

        def encode_file (field_name):
            filename = files[field_name]
            return ('--' + boundary,
                    'Content-Disposition: form-data; name="%s"; filename="%s"' % (field_name, StringOps.GetFilename(filename)),
                    'Content-Type: %s' % get_content_type(filename),
                    '', open(filename, 'rb').read())

        lines = []
        if (data):
            for name in data:
               lines.extend(encode_field(name))

        for name in files:
            lines.extend(encode_file(name))

        lines.extend(('--%s--' % boundary, ''))
        #BELOW THROWS EXCEPTION
        body = "\r\n".join(lines)
        #UnicodeDecodeError, something like that
        print "Baa"

我编写的一些样本

data = []
data.append(open("1.mkv", 'rb').read())
data.append("somestring")

body = "\r\n".join(data)
#throws exception

0 个答案:

没有答案