我正在使用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