Autorisation refusée : résolution de l'erreur "Errno 13" dans la gestion des fichiers Python
Lorsque vous travaillez avec des fichiers en Python, vous pouvez rencontrer le message " PermissionError : [Errno 13] Exception "Autorisation refusée". Cela se produit lorsque vous tentez d'accéder ou de modifier un fichier pour lequel votre compte utilisateur actuel ne dispose pas des autorisations nécessaires.
Dans le cas spécifique que vous avez décrit, vous essayez de télécharger un fichier à l'aide de la fonction open(), mais recevoir une « PermissionError ». En effet, vous fournissez à la fonction un chemin de fichier qui est un dossier, plutôt qu'un fichier spécifique.
Pour résoudre ce problème, vous devez vous assurer que la variable place_to_save pointe vers un chemin de fichier valide. Vous pouvez le faire en utilisant la fonction isfile() pour vérifier que le chemin fait référence à un fichier plutôt qu'à un dossier.
Voici une version mise à jour de votre code qui inclut les vérifications nécessaires :
import os def download(): # get selected line index index = films_list.curselection()[0] # get the line's text selected_text = films_list.get(index) directory = filedialog.askdirectory(parent=root, title="Choose where to save your movie") place_to_save = directory + '/' + selected_text # Verify that the path points to a file if not os.path.isfile(place_to_save): raise PermissionError("Permission denied: {}".format(place_to_save)) with open(place_to_save, 'wb') as file: connect.retrbinary('RETR ' + selected_text, file.write) tk.messagebox.showwarning('File downloaded', 'Your movie has been successfully downloaded!' '\nAnd saved where you asked us to save it!!')
En ajoutant cette vérification, vous pouvez empêcher l'apparition de "PermissionError" en vous assurant que vous travaillez toujours avec des chemins de fichiers valides.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!