Python 3.x 属性错误:';非类型';对象没有属性';下';蟒蛇3

Python 3.x 属性错误:';非类型';对象没有属性';下';蟒蛇3,python-3.x,attributeerror,Python 3.x,Attributeerror,这是一个语音辅助,我想听到我的声音,打开谷歌或搜索!但是我的程序有一个属性错误 我想: 1.初始化 2.说话 3.听觉和言语识别 4.做一些类似搜索的事情 我的代码: import pyttsx3 import speech_recognition as sr import datetime import wikipedia import webbrowser import os import smtplib import jdatetime import persian Boss = 'Mo

这是一个语音辅助,我想听到我的声音,打开谷歌或搜索!但是我的程序有一个属性错误

我想:

1.初始化 2.说话 3.听觉和言语识别 4.做一些类似搜索的事情

我的代码

import pyttsx3
import speech_recognition as sr
import datetime
import wikipedia
import webbrowser
import os
import smtplib
import jdatetime
import persian

Boss = 'Mohamaad'
print('Hello sir %s' % Boss)
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[0].id)

def speak(text):
    engine.say(text)
    engine.runAndWait()

speak('Hello sir %s' % Boss)

def takeCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        r.record(source,duration=2)
        speak('I am Listening sir')
        print("Listening ....")
        audio = r.listen(source)

    try :
         print("Recognizing...")
         query = r.recognize_google(audio, Language ='en-us')
         print(f"user said: {query}\n")

    except Exception as e:
        print("Say that again please")
        speak('Say that again please')
        query=None

    return query

wishMe()
query = takeCommand()



#Logic for executing tasks as per the query
if 'wikipedia' in query.lower():
    speak('searching in wikipedia....')
    query = query.replace("wikipedia", "")
    results = wikipedia.summary(query, sentences =2)
    print(results)
    speak(results)

elif 'open youtube' in query.lower():
    url = 'youtube.com'
    chrome_path = 'C:\Program Files (x86)\Google\Chrome\Application/chrome.exe %s'
    webbrowser.get(chrome_path).open(url)
elif 'open Google' in query.lower():
    url = 'Google.com'
    chrome_path = 'C:\Program Files (x86)\Google\Chrome\Application/chrome.exe %'
    webbrowser.get(chrome_path).open(url)
elif 'open github' in query.lower():
    url = 'github.com'
    chrome_path = 'C:\Program Files (x86)\Google\Chrome\Application/chrome.exe %'
    webbrowser.get(chrome_path).open(url)
elif 'Play music' in query.lower():
    songs_dir = "C:\\Users\\mohmmad\\Downloads\\Music"
    songs = os.listdir(songs_dir)
    speak(songs)
    os.startfile(os.path.join(songs_dir,songs[0]))

elif 'time' in query():
    strTime = datetime.datetime.now().strftime("%H:%M:%S")
    speak(f"{Boss} the time is {strTime}")


输出:

初始化贾维斯,哈哈哈
你好,穆罕默德爵士
2020-06-16 18:21:58.364205
1399-03-27 18:21:58.370148
听着
认识到
请再说一遍
回溯(最近一次呼叫最后一次):
文件“C:\Us
在此处输入代码”
ers\mohammad\AppData\Local\Programs\Python\Python36-32\Prject man\Main.py”,第71行,在
如果query.lower()中有“wikipedia”:
AttributeError:“NoneType”对象没有属性“lower”


感谢您的帮助

您需要检查查询是否为无

if query:
    if 'wikipedia' in query.lower():
        speak('searching in wikipedia....')
        query = query.replace("wikipedia", "")
        results = wikipedia.summary(query, sentences =2)
        print(results)
        speak(results)

    elif 'open youtube' in query.lower():
        url = 'youtube.com'
        chrome_path = 'C:\Program Files (x86)\Google\Chrome\Application/chrome.exe %s'
        webbrowser.get(chrome_path).open(url)

标题中的错误是因为您试图
lower()?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及可以使用。请将您的问题添加到其中,否则我们可能无法提供帮助。您好,欢迎使用Stack Overflow!python中的
AttributeError:'NoneType'
是一个错误,表示您试图访问已设置为
None
的变量,表示该变量为空或没有值,或者在其他编程语言中为null。我建议您重新检查代码,找出哪些情况会导致
query
变为
None
,然后修改代码以处理这些情况