Permissionerror errno 13 permission denied

Arkadaşlar ben sesli asitan kodlamaya çalısınca
permissionerror errno 13 permission denied
Diye bir hata kodu aliyorum arastirma sonucunda pythonu yönetici olarak çalıştırmam gerektigini dusunuyorum.yonetici olarak calistiramadim ama cozumu olan varmi?ve ya baska bir nedeni olabilirmi?

bkz: Soru Sorarken Sıkça Düşülen Hatalar #5

Dusunmeye cozum mu ariyorsunuz? Cozum denemek.

1 Beğeni

Dusunmeye cozum aramiyorum kardesim oyle oldugunu dusunuyorum. Cozum varmi? Yonetici olarak calistiramiyorum.belki baska bir nedende ola bilir anladinmi demek istedigimi yoksa cocuk gibi her seyi teker tekermi anlatiayim sana

Windows kullandığınızı varsayarak anlatacağım. cmd yi yönetici olarak çalıştırıp dosyanın olduğu konuma gidin (cd py/dosyasinin/konumu) sonra python dosyaadi.py yazıp çalıştırın. O da olmassa programı pyinstaller gibi bir araçla derleyip yönetici olarak çalıştırmayı deneyebilirsiniz.

Ayrıca soruda pek detay verilmediği gerçeğini de göz ardı edemeyiz. Kodu görmeden sadece bu kadarını anlatabiliyoruz. Sesli asistan kodlamaya çalışınca PermissionError aldığınızı söylemişsiniz. Hatanın doğrudan sesli asistanla bağlantısı olduğunu sanmıyorum. Yani asistanın sesli olarak yanıt vermesi veya sesli olarak komut alabiliyorsa bunun için mikrofona erişmek v.b. şeylerden değil de asistanın yaptığı bir işlemden dolayı bu hatayı alıyor olabilirsiniz. Tahminimce yanlış bir dosya konumuna erişmeye çalışıyorsunuz.

Mesela C:\\Users\\YazBel\\Desktop\\SesliAsistan\\dosya.txt diye bir dosya konumumuz olsun. Siz dosya.txt ye erişmek istiyorsunuz ancak SesliAsistan a erişmeye çalışıyorsunuz. Kod ile anlatayım:
Yapmanız gereken şu:

open("C:\\Users\\YazBel\\Desktop\\SesliAsistan\\dosya.txt", "r")

Siz ise şunu yapmışsınız:

open("C:\\Users\\YazBel\\Desktop\\SesliAsistan", "r")

işletim sistemi klasörü okumanıza izin vermiyor ve PermissionError alıyorsunuz. Yönetici olarak ta çalıştırsanız klasörü okumanıza izin vermeyecek.

Belirttiğiniz hata bu nedenden çıkıyor. Eğer başka nedenlerde aynı hataya sebep oluyorsa bilenler anlatsın lütfen.

1 Beğeni

Çok teşekkürler dostum su an musait olmadigim ve bilgisayarim yanimda olmadigi icin kodu gonderemiyorum yarin dediklerini dener ve kodu yazarim tekrar tesekkurler

1 Beğeni
import playsound, os
from gtts import gTTS
import speech_recognition as sr



r=sr.Recognizer()

def record(ask = False):
    with sr.Microphone() as source:
        if ask:
            print(ask)
        audio =r.listen(source)
        voice = ""
        try:
            voice=r.recognize_google(audio, language="tr-TR")
        except sr.UnknownValueError:
            print("Asi : Anlayamadim")
        except sr.RequestError:
            print("Asi : sistem caalismiyor")
        return voice

def response(voice):
    if "merhaba" in voice:
        speak("sanada merhaba")
def speak(string):
    tts = gTTS(text=string, lang="tr")
    file = "answer.mp3"
    tts.save(file)
    playsound.playsound(file)
    os.remove(file)
    
    
    
speak("selam")
speak("selam")
while True:
    voice = record()
    if voice != "":
        voice = voice.lower()
        print(voice)
        response(voice)

aldigim hata mesaji ise bu

Traceback (most recent call last):
File “C:\Users\User\Desktop\ugur\python\asi\main.py”, line 36, in
speak(“selam”)
File “C:\Users\User\Desktop\ugur\python\asi\main.py”, line 29, in speak
tts.save(file)
File “C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\gtts\tts.py”, line 312, in save
with open(str(savefile), ‘wb’) as f:
PermissionError: [Errno 13] Permission denied: ‘answer.mp3’

Bana attığınız kodda with open(str(savefile), ‘wb’) as f: diye bir yer göremiyorum ancak hata orada oluşmuş.
Tahminimce dosyayı sildikten sonra veya playsound modülü zaten dosyayı kullanırken açmaya çalışıyorsunuz.

1 Beğeni

O yanilmiyorsam gTTS ile ilgili bir sorundu bir alt surume indirerek hallettim .
Digeri ise bilgisayarla ilgili ola bilir bilmiyorum nedenini bulamadim

Ha bide ilave ediyim
İlk speakta hata vermiyor 2 ci speakta hata veriyor
Yani kodu boyle degistirirsen

import playsound, os
from gtts import gTTS
import speech_recognition as sr



r=sr.Recognizer()

def record(ask = False):
    with sr.Microphone() as source:
        if ask:
            print(ask)
        audio =r.listen(source)
        voice = ""
        try:
            voice=r.recognize_google(audio, language="tr-TR")
        except sr.UnknownValueError:
            print("Asi : Anlayamadim")
        except sr.RequestError:
            print("Asi : sistem caalismiyor")
        return voice

def response(voice):
    if "merhaba" in voice:
        speak("sanada merhaba")
    else:
        speak("ne diyecegimi bilmiyorum")
        speak("selam")
def speak(string):
    tts = gTTS(text=string, lang="tr")
    file = "answer.mp3"
    tts.save(file)
    playsound.playsound(file)
    os.remove(file)
    
    
    

while True:
    voice = record()
    if voice != "":
        voice = voice.lower()
        print(voice)
        response(voice)

Dinler eger konusmanin icinde merhaba gecerse cevap verir ama sonraki speak kodunda hata verecektir

Kodu gonderdim aib kardes kodda hata yok ama yinede deneye bilirsin çozumun varsa bilmek isterim teşekkürler kodda hata olmadigini dusundugum icin kodu paylasma geregi duymamistim.



import playsound, os
from gtts import gTTS
import speech_recognition as sr



r=sr.Recognizer()

def record(ask = False):
    with sr.Microphone() as source:
        if ask:
            print(ask)
        audio =r.listen(source)
        voice = ""
        try:
            voice=r.recognize_google(audio, language="tr-TR")
        except sr.UnknownValueError:
            print("Asi : Anlayamadim")
        except sr.RequestError:
            print("Asi : sistem caalismiyor")
        return voice

def response(voice):
    if "merhaba" in voice:
        speak("sanada merhaba")
def speak(string):
    tts = gTTS(text=string, lang="tr")
    file = "answer.mp3"
    tts.save(file)
    playsound.playsound(file)
    os.remove(file)
    
    
    
speak("selam")
speak("selam")
while True:
    voice = record()
    if voice != "":
        voice = voice.lower()
        print(voice)
        response(voice)

aldigim hata mesaji ise bu

Traceback (most recent call last):
File “C:\Users\User\Desktop\ugur\python\asi\main.py”, line 36, in
speak(“selam”)
File “C:\Users\User\Desktop\ugur\python\asi\main.py”, line 29, in speak
tts.save(file)
File “C:\Users\User\AppData\Local\Programs\Python\Python39\lib\site-packages\gtts\tts.py”, line 312, in save
with open(str(savefile), ‘wb’) as f:
PermissionError: [Errno 13] Permission denied: ‘answer.mp3’

Programı test ettim ve hiçbir hata almadım. Şuan aklıma gelen tek çözüm answer.mp3 yerine tam bir dosya konumu belirlemeniz. Yani “C:\Users\User\Desktop\ugur\python\asi\answer.mp3” gibi veya direkt Desktop a (C:\Users\User\Desktop\answer.mp3) kaydetmeyi deneyin.

1 Beğeni

Onuda denemistim o zamanda permissionerror errno 2 hatasini aliyorum buyuk ihtimalle bilgisayardan kaynakli ama nasil duzeltecegimi cozemiyorum

kodun başına

import os

os.chdir("C:\\Users\\User\\Desktop") # veya C:\\Users\\User\\Desktop\\ugur\\python\\asi

ekleyip dener misiniz? answer.mp3 ü answer.mp3 olarak bırakın.

1 Beğeni

Şu an bilgisayar yanimda degil ama 2-3 saate haber veririm bu arada teşekkürler yardimlarin icin

1 Beğeni

Furkan yine olmadi sende duzgun calisiyormu kod denedinmi ? ben simdi yeniden inceledim sen

bu hatayi duzelte bildinmi ben duzelttim sanmistim ama duzelmemis farketmemistim

Ben o hatayı almıyorum bile. Hatta bende diğer hata da çıkmıyor. Kod sorunsuz çalışıyor bende.

1 Beğeni

Anladim benim bilgisayar kaynakli o zaman ama nasil cozebilirim neredeyse her seyi denedim