Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que j'obtiens une « PermissionError : [Errno 13] Autorisation refusée » lors de l'enregistrement de fichiers ?

Pourquoi est-ce que j'obtiens une « PermissionError : [Errno 13] Autorisation refusée » lors de l'enregistrement de fichiers ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-03 14:10:13306parcourir

Why Am I Getting a

Autorisation refusée : dépannage de « PermissionError : [Errno 13] Autorisation refusée »

Lorsque vous essayez d'enregistrer un fichier dans un répertoire spécifié, vous peut rencontrer l'erreur « PermissionError : [Errno 13] Autorisation refusée ». Cette erreur suggère que le script ne dispose pas des autorisations nécessaires pour ouvrir le fichier à l'emplacement prévu.

Confusion entre les fichiers et les dossiers

Une raison courante de cette erreur est une erreur un chemin sélectionné pour un dossier au lieu d'un fichier spécifique. Lorsque vous utilisez la fonction requestdirectory pour sélectionner un répertoire, le chemin renvoyé représente un dossier, pas un fichier.

Pour résoudre ce problème, assurez-vous que la variable place_to_save représente avec précision le chemin complet du fichier souhaité, y compris le nom de fichier. Vérifiez la valeur du répertoire et du texte_sélectionné pour vérifier que vous les combinez correctement.

Exemple de code avec vérification

import os

def download():
    # ... same code as before
    directory = filedialog.askdirectory(parent=root, title="Choose where to save your movie")
    if not directory:
        return  # User canceled the selection

    filename = selected_text
    place_to_save = os.path.join(directory, filename)

    if os.path.isfile(place_to_save):
        # File already exists, check if it's writable
        try:
            with open(place_to_save, 'wb') as f:
                pass
        except PermissionError:
            print("Insufficient permissions to overwrite existing file")
    else:
        # New file, create it and write to it
        with open(place_to_save, 'wb') as f:
            connect.retrbinary('RETR ' + selected_text, f.write)

Observations supplémentaires

  • Assurez-vous que le compte utilisateur exécutant le script dispose des autorisations suffisantes pour écrire sur la cible répertoire.
  • Vérifiez si un logiciel antivirus ou pare-feu bloque l'accès au fichier.
  • Si tout le reste échoue, vous pouvez essayer d'exécuter le script avec des privilèges administratifs pour lui accorder temporairement des autorisations élevées.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn