- py3 cv2模块保存中文路径
cv2.imencode('.jpg', frame)[1].tofile('中文/1.jpg') #imwrite中文乱码
- sys.out不可同时出现在不同文件,否则报错‘ValueError: I/O operation on closed file.’
if int(sys.version[0])==3:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') #中文输出
- py3环境json.loads(requests.body)报错:the JSON object must be str, not 'bytes'
json.loads(str(self.request.body, encoding='utf-8'))
- py3中文print异常:UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-10: ordinal not in range(128)
import io, sys
if int(sys.version[0])==3:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
- 文本读取,py3中不适用utf-8时,报错:UnicodeEncodeError: 'gbk' codec can't encode character: illegal multibyte sequence
with open(txt, 'r') as f: #py2
buffs = f.realines()
with open(txt, 'r', encoding='utf-8') as f: #py3
buffs = f.readlines()
- 文件读取, py3 报错 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
with open(imagePath, 'r') as f: #py2
imageBin = f.read()
with open(imagePath, 'rb') as f: #py3
imageBin = f.read()
- base64.b64encode(字符串),相关错误: a bytes-like object is required
key='tmp'
if int(sys.version_info[0]) == 3:
headers={'Authorization':'Basic' + base64.b64encode(key.encode()).decode()}
else:
headers = {'Authorization': 'Basic' + base64.b64encode(key)}
- 类继承
class mask_rcnn_outputs(nn.Module):
def __init__(self, dim_in):
super(mask_rcnn_outputs, self).__init__() #python2
class mask_rcnn_outputs(nn.Module):
def __init__(self, dim_in):
super().__init__() #python3
- 模块加载
import sys
if int(sys.version[0])==2:
import cPickle
import json
import urllib
else:
import pickle as cPickle
import simplejson as json
import urllib.request as urllib
方法1:转换编码为unicode
Either transform into Unicode (json.dumps(x.decode("utf-8"))),
or into an integer array (json.dumps(list(x))).
方法2:pip3 install simplejson
import simplejson as json
- 除法运算差异,这也是py2转py3常遇到的问题
>>> 1/2 #py2
0
>>> 1/2 #py3
0.5
>>> 1//2
0
参考文献: