python遇到的坑

python3.6
urllib库和urllib2库合并成了urllib库。 所有的 urllib2
---->urllib.request代替 例如: urllib2.urlopen()---->urllib.request.urlopen() urllib2.Request()---->urllib.request.Request()
python3.6
wf.writeframes("".join(data))
TypeError: sequence item 0: expected str instance, bytes found
期望输入的是字符串,但是输入的是字节
更正方式:wf.writeframes(b"".join(data))
我们是在保存wav格式的音频,录音,我们期望拼接的就是字节而不是字符串,所以不能简单的将后面的data转换为字符串格式。
python3.6
  File "E:/1_python_code/code/py_qt/pyqt_audio/my_audio_record.py", line 55, in get_token
    return json.load(json_data)['access_token']
  File "E:\python\lib\json\__init__.py", line 296, in load
    return loads(fp.read(),
AttributeError: 'bytes' object has no attribute 'read'
使用json解析数据时,通常遇到这里就会出现问题'bytes' object has no attribute 'read',这是由于使用的json内置函数不同,一个是load另一个是loads。
更正方式return json.loads(json_data)['access_token']
python3.6
如果装了serial很可能会遇到
AttributeError: module 'serial' has no attribute 'Serial'
这时候你要先卸载serial,在安装pyserial。
python3.6
自己从新定义了threading.Thread中的run方法
class MyThread(threading.Thread):
    ......    
    def run(self):
        ...
        self.res = apply(self.func, self.args)
        ....         
在后文中是这么用的:
    def run(self):
        ...
        self.res = apply(self.my_record)
        ....    
然后就报了下面的错误:  
NameError: name 'apply' is not defined
原因是:python3中已经不再用apply这个函数
官网说明:https://docs.python.org/2/library/functions.html#apply
官方:Use function(*args, **keywords) instead of apply(function, args, keywords)
所以以上两句用到apply的分别更正为:
   self.res = self.func(*self.args)
   self.res = self.my_record()
补充:my_record()为我自己定义的一个函数。

 

posted @ 2018-05-30 17:29  Liu呵呵  阅读(825)  评论(0)    收藏  举报