No such file or directory
Python
Erreur courante
Explication
L'erreur `FileNotFoundError: [Errno 2] No such file or directory: 'fichier.csv'` survient quand vous ouvrez (ou lisez) un fichier que Python ne trouve pas au chemin indiqué. Neuf fois sur dix, le problème est un **chemin relatif** interprété depuis le **répertoire de travail courant**, qui n'est pas celui que vous croyez.
```python
with open("donnees.csv") as f: # cherché dans le répertoire courant
contenu = f.read()
# FileNotFoundError: [Errno 2] No such file or directory: 'donnees.csv'
```
Causes courantes
- **Chemin relatif** résolu depuis le mauvais répertoire (le « working directory »). - **Faute de frappe** dans le nom ou l'extension (`.csv` vs `.CSV`). - **Le fichier n'existe pas encore** (vous le lisez avant de l'avoir créé). - **Exécution depuis un autre dossier** que celui du script.
1. Vérifiez le répertoire de travail
import os
print(os.getcwd()) # affiche où Python cherche les chemins relatifs
2. Construisez un chemin relatif au script
__file__ rend le chemin indépendant du dossier d'exécution :
from pathlib import Path
chemin = Path(__file__).parent / "donnees.csv"
with open(chemin) as f:
contenu = f.read()
3. Testez l'existence avant d'ouvrir
from pathlib import Path
fichier = Path("donnees.csv")
if fichier.exists():
contenu = fichier.read_text(encoding="utf-8")
else:
print("Fichier introuvable :", fichier.resolve())
4. En écriture, créez le dossier au besoin
from pathlib import Path
sortie = Path("exports/rapport.txt")
sortie.parent.mkdir(parents=True, exist_ok=True)
sortie.write_text("ok", encoding="utf-8")
Comment prevenir cette erreur
- **Utilisez `pathlib`** et des chemins relatifs à `__file__` plutôt que des chaînes brutes.
- **Affichez `Path(...).resolve()`** dans vos messages d'erreur pour voir le chemin absolu réellement cherché.
- Référence : [docs.python.org — pathlib](https://docs.python.org/fr/3/library/pathlib.html).
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Pourquoi le script fonctionne dans mon IDE mais pas en terminal ?
Parce que le répertoire de travail diffère : l'IDE le règle souvent sur le dossier du projet, le terminal sur le dossier d'où vous lancez la commande. Utilisez un chemin relatif à `__file__` pour rendre le code indépendant.
Comment savoir où Python cherche le fichier ?
Affichez `os.getcwd()` (répertoire courant) et `Path('mon_fichier').resolve()` (chemin absolu cherché). La comparaison révèle presque toujours le malentendu.