Найти - Пользователи
Полная версия: try, if и к ним psutil
Начало » Python для новичков » try, if и к ним psutil
1
dsubbs
Начал работать над небольшим голосовым помощником, основу взял с инета. Хочу начать изучение питона именно с подобного рода проектов. Есть опыт в делфи.
А теперь вопрос: выделил строчки, после добавления которых вылетает с ошибкой “incosistent use of tabs” или что-то вроде этого.
только часть кода

 def work(self):
     print("Загружаюсь...")
     with self._microphone as source:
         self._recognizer.adjust_for_ambient_noise(source)
     try:
         while True:
             print("Кьюи активна, жду команд...")
             with self._microphone as source:
                 audio = self._recognizer.listen(source)
                 print("поняла...")
             try:
                 statement = self._recognizer.recognize_google(audio, language="ru_RU")
                 statement=statement.lower()
                  if((statement.find("калькулятор")!=-1) and (statement.find("открой")!=-1)):
                      self.osrun('calc')
                    
                  if((statement.find("калькулятор")!=-1) and (statement.find("закрой")!=-1)):
		      PROCNAME = "Calculator.exe"
                      for proc in psutil.process_iter():
                          if proc.name == PROCNAME:
                              proc.kill()
                          else self.say('Процесс уже закрыт!')	

JOHN_16
В качестве отступа используйте только 4 пробела, а не табуляцию. И да, этот вопрос достаточно легко гуглится - не обязательно было спрашивать это здесь.
dsubbs
Да, извиняюсь, ожидал, что проблема совсем не в табуляции. Но выделенный код все равно не работает, хотелось бы понять почему.
JOHN_16
dsubbs
не работает это ни о чем не говорит - что не работает? Ошибка какая то? Результат не верный? Это же принципиально разные вещи. В Питоне все хорошо с интроспекцией, поэтому полный traceback ошибки которую выдает питон игнорировать нельзя, если хотите разбираться с проблемами эффективно.
Ну и код на форумах и тп принято вставлять в специальные теги, что бы не терялось форматирование. Вы же видите что Ваш код превратился в кашу. И что мы там разбирать будем? правильный ответ - ничего, я даже не посмотрю на него. Ведь это бессмысленно, хотя бы пока отступы не будут верными.
Rodegast
> Да, извиняюсь, ожидал, что проблема совсем не в табуляции.

А проблема не с табуляцией, а стем что ты умудрился смешать её с пробелами. Что-бы этого не происходило включи подсветку табов/пробелов в редакторе.
dsubbs
Такс, с более-менее тривиальными вещами питона разобрался.
Насчет закрытия: гуглил и пытался сделать по инструкции со стаковерфлоу, всё тщетно. В идеале, нужна функция, которая может закрывать приложение по его pid, но пока что достаточно, если оно будет закрывать системные приложения, открытые из-под самой программы (калькулятор, например)
Для этого пишу функцию:
 def pclose(self, procname):
    self.say('Закрываю ' + str(procname)) #say - функция озвучки заданной фразы
    for proc in psutil.process_iter():
        if proc.name == str(procname):
            proc.terminate()
Программа работает, все нормально, при вызове функции говорилка работает, ошибок не выдаёт. Только вот дочку не закрывает.
Rodegast
> В идеале, нужна функция, которая может закрывать приложение по его pid
 import os
import signal
 
os.kill(int(PID), signal.SIGKILL)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB