Permission denied

Python Erreur courante

Explication

L'erreur `PermissionError: [Errno 13] Permission denied: '...'` signifie que le système d'exploitation **refuse l'accès** au fichier ou au dossier demandé. Le programme n'a pas les droits nécessaires, la cible est un dossier (et non un fichier), ou le fichier est déjà ouvert/verrouillé par un autre programme. ```python with open("/etc/hosts", "w") as f: # pas de droit d'écriture f.write("...") # PermissionError: [Errno 13] Permission denied: '/etc/hosts' ```

Causes courantes

- **Droits insuffisants** en lecture ou en écriture sur le fichier/dossier. - **Le chemin est un dossier**, pas un fichier (`open("/tmp")`). - **Fichier verrouillé** par un autre programme (sous Windows, un Excel ouvert). - **Emplacement protégé** (dossiers système, `/etc`, `C:\Program Files`). - **Port privilégié** (< 1024) pour un serveur réseau sans droits administrateur.

1. Écrivez dans un emplacement autorisé

from pathlib import Path
sortie = Path.home() / "rapport.txt"   # dossier utilisateur, accessible
sortie.write_text("ok", encoding="utf-8")

2. Vérifiez que la cible est un fichier, pas un dossier

from pathlib import Path
p = Path("export")
if p.is_dir():
    p = p / "rapport.txt"   # ajoutez un nom de fichier

3. Fermez les autres programmes (Windows)

Un fichier ouvert dans Excel ou un éditeur est verrouillé. Fermez-le avant d'écrire depuis Python.

4. Ajustez les droits si nécessaire

chmod u+w mon_fichier.txt    # Linux/macOS : donner le droit d'écriture

Comment prevenir cette erreur

- **Écrivez dans des dossiers utilisateur** (`Path.home()`, `tempfile`) plutôt que dans des emplacements système. - **Encadrez** les accès fichiers par `try/except PermissionError` pour un message clair. - N'exécutez pas tout en root/administrateur pour « contourner » : corrigez les droits ou l'emplacement. - Référence : [docs.python.org — PermissionError](https://docs.python.org/fr/3/library/exceptions.html#PermissionError).

Besoin d'aide sur votre projet ?

Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.

Nous contacter

Questions frequentes

Le code marche sur ma machine mais échoue sur le serveur, pourquoi ?
Parce que l'utilisateur et les droits diffèrent : sur le serveur, le processus n'a peut-être pas le droit d'écrire à l'emplacement choisi. Écrivez dans un dossier dont l'utilisateur du service est propriétaire.
Pourquoi `PermissionError` alors que le fichier existe et m'appartient ?
Souvent parce qu'il est **ouvert ailleurs** (Excel sous Windows le verrouille) ou que le chemin pointe en réalité vers un **dossier**. Fermez les autres programmes et vérifiez `Path(...).is_file()`.

Erreurs similaires

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.