Python: [Errno 13] Отказано в доступе

В настоящее время я пытаюсь заставить случайного селектора / кассира приступить к работе. Я новичок в Python, но имею некоторый опыт написания сценариев на других языках. Теперь я поставлю код ошибки:

> Traceback (most recent call last):
  File "C:\Users\drkater\Desktop\Crap\Projekte\Voice Assitant\Jarvis.py", line 64, in <module>
    assistant(myCommand())
  File "C:\Users\drkater\Desktop\Crap\Projekte\Voice Assitant\Jarvis.py", line 59, in assistant
    talkToMe('ich weis nicht was du meinst!')
  File "C:\Users\drkater\Desktop\Crap\Projekte\Voice Assitant\Jarvis.py", line 23, in talkToMe
    text_to_speech.save('audio.mp3')
  File "C:\Python\lib\site-packages\gtts\tts.py", line 246, in save
    with open(savefile, 'wb') as f:
PermissionError: [Errno 13] Permission denied: 'audio.mp3'

Сейчас я покажу вам свой исходный код. Кроме того, мои строки могут показаться вам странными, они на немецком языке, так как я из Германии.

from gtts import gTTS
from playsound import playsound
from random import randint
import speech_recognition as sr
import os
import re
import webbrowser
import smtplib
import requests

jokes = [
    "Wie viel wiegt ein Hipster?, ein instagram",
    "Wer hätte gedacht, dass das Leben als Informatiker so Hardware",
    "Der Postbote geht von Schlitz zu Schlitz bis der Sack leer ist!",
]

def talkToMe(audio):
    print(audio)
    if os.path.isfile('./audio.mp3'):
        os.remove('./audio.mp3')

    text_to_speech = gTTS(text=audio, lang='de')
    text_to_speech.save('audio.mp3')
    playsound('audio.mp3')

def myCommand():
r = sr.Recognizer()

with sr.Microphone() as source:
    print('Bereit...')
    r.pause_threshold = 1
    r.adjust_for_ambient_noise(source, duration=1)
    audio = r.listen(source)

try:
    command = r.recognize_google(audio).lower()
    print('Du sagtest: ' + command + '\n')

    except sr.UnknownValueError:
        print('dein letzter befehl war undeutlich!')
        command = myCommand();

    return command

def assistant(command):
    if 'open youtube' in command:
        reg_ex = re.search('öffne youtube (.*)', command)
        url = 'https://www.youtube.com/'
        webbrowser.open(url)

elif 'tell me a joke' in command:
    talkToMe(jokes[randint(0, len(jokes) - 1)])

else:
    talkToMe('ich weis nicht was du meinst!')

talkToMe('warte auf weitere befehle')

while True:
    assistant(myCommand())

Надеюсь, кто-нибудь может мне помочь


person drkater    schedule 18.10.2018    source источник
comment
Аудио.mp3 уже открыт? Может в другой программе?   -  person Acccumulation    schedule 19.10.2018
comment
Я почти уверен, что ошибка связана с операционной системой, и это не проблема Python. Поскольку у вашего имени файла нет пути, я предполагаю, что ваша библиотека пытается записать его в какое-то место по умолчанию, и по какой-то причине это не разрешено. Возможно, вы могли бы попробовать передать имя файла как полную строку пути и посмотреть, сработает ли это.   -  person Paul Cornelius    schedule 19.10.2018
comment
Это похоже на проблему с разрешениями каталога — вы всегда должны писать либо во временный каталог, либо в пользовательский каталог.   -  person o11c    schedule 19.10.2018


Ответы (2)


Вы должны изменить права доступа к файлу audio.mp3. Проверьте права доступа к вашему файлу с помощью команды оболочки ls -l и используйте chmod a+rw audio.mp3, чтобы сделать файл доступным для записи. Вы можете найти вопрос по похожей проблеме здесь

person dallonsi    schedule 18.10.2018

Убедитесь, что файл, к которому вы пытаетесь получить доступ, имеет правильные разрешения на выполнение для пользователя, выполняющего python.

person bbot    schedule 18.10.2018