为什么我换了一台电脑,同样的代码会报 has no attribute错误呢?

发布于 2022-09-12 23:19:08 字数 1392 浏览 20 评论 0

我先贴一下代码吧

# -*- coding:utf-8 -*-
# author doudouji 1020763068@qq.com

import pyaudio
from loguru import logger



class Recorder(object):

    def __init__(self, FORMAT=pyaudio.paInt16, CHANNELS=1, RATE=16000, CHUNK=1024):
        self.CHUNK = CHUNK
        self.FORMAT = FORMAT
        self.CHANNELS = CHANNELS
        self.RATE = RATE

        self.p = pyaudio.PyAudio()
        self.stream = self.p.open(format=self.FORMAT,
                                  channels=self.CHANNELS,
                                  rate=self.RATE,
                                  input=True,
                                  frames_per_buffer=self.CHUNK)
        logger.info('Recorder已创建')
        return

    def get_record_audio(self):
        frames = []
        for i in range(0, int(self.RATE / self.CHUNK)):
            data = self.stream.read(self.CHUNK)
            frames.append(data)
        return frames
    
    def __del__(self):
        self.stream.stop_stream()
        self.stream.close()
        self.p.terminate()
        logger.info('Recorder已销毁')
        return

我这里的代码本来是在公司电脑上写的,正常可运行,由于有使用讯飞的sdk,所以干脆直接打了个压缩包带回家了,在家的电脑上也特地更新了python的环境和各种第三方包,但运行的时候会在__del__()里self.stream.stop_stream()这句报错AttributeError: class 'Recorder' has no attribute 'stream'这种错误。

我开始觉得是pyaudio包的问题,但我直接把公司电脑上下载的whl拿回家也还是不行,
感觉应该是环境的问题,不知道各位有什么看法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

霓裳挽歌倾城醉 2022-09-19 23:19:08

问题解决了,是我自己的麦没插好。。。pyaudio报的错

彼岸花似海 2022-09-19 23:19:08

不建议在__del__里写太多自己的代码,最好写成显示的方法调用。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文