首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python,将二进制数据从python2发布到python3

python,将二进制数据从python2发布到python3
EN

Stack Overflow用户
提问于 2016-12-14 02:58:32
回答 1查看 110关注 0票数 0

我需要从二进制文件AmbientTemp.dat向服务器发布一些数据,其中有python2:

代码语言:javascript
复制
import urllib
import urllib2

fp = 'xxx/AmbientTemp.dat'
with open(fp, 'rb') as fo:
    ambient = fo.read(64)
data = urllib.urlencode({
    'action': 'xxx',
    'ambient': ambient,
})
req = urllib2.Request('http://xxx', data=data)
urllib2.urlopen(req)

首先,我可以通过python2保存数据:

代码语言:javascript
复制
class AmbientView(xxx):
    def post(self, *args, **kwargs):
        ambient = self.request.POST.get('ambient', '')
        fp = 'xxx/AmbientTemp.dat'
        with open(fp, 'wb') as fo:
            fo.write(ambient)
        ...

但这是python3.5中的错误:

代码语言:javascript
复制
...fo.write(ambient)
TypeError: a bytes-like object is required, not 'str'

因此,我对str数据进行编码:

代码语言:javascript
复制
fo.write(ambient.encode(encoding='utf-8'))

但是AmbientTemp.dat变成了78位,我只是read(64)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-14 09:19:37

我尝试用latin1对数据进行编码,并获得正确的数据。

代码语言:javascript
复制
fo.write(ambient.encode(encoding='latin1'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41134108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档