Python open () donne IOError: Errno 2 pas de tel fichier ou répertoire
pour une raison quelconque, mon code a du mal à ouvrir un fichier simple:
C'est le code:
file1 = open('recentlyUpdated.yaml')
et l'erreur est:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
- Naturellement, j'ai vérifié que c'est le nom exact du fichier.
- j'ai essayé de faire le tour du fichier, donnant à
open()
le chemin complet vers le fichier et rien de tout cela ne semble fonctionner.
5 réponses
- assurez-vous que le fichier existe: utilisez
os.listdir()
pour voir la liste des fichiers du répertoire courant - assurez-vous d'être dans le répertoire dans lequel vous pensez être avec
os.getcwd()
(si vous lancez votre code à partir d'un IDE, vous pourriez bien être dans un répertoire différent) - vous pouvez alors soit:
- Call
os.chdir(dir)
,dir
étant le dossier où le fichier est situé, puis ouvrir le fichier avec juste son nom, comme vous le faisiez. - spécifiez un chemin absolu vers le fichier dans votre appel
open
.
- Call
- N'oubliez pas d'utiliser une chaîne brute si votre chemin utilise des antislashs, comme
so:
dir = r'C:\Python32'
- si vous n'utilisez pas de chaîne brute, vous devez échapper à tous les antislashs:
'C:\User\Bob\...'
- Forward-slashes fonctionne également sur les fenêtres
'C:/Python32'
et ne doit pas être échappé.
- si vous n'utilisez pas de chaîne brute, vous devez échapper à tous les antislashs:
permettez-moi de clarifier comment Python trouve les fichiers:
- An absolute path est un chemin qui commence avec le répertoire racine de votre ordinateur, par exemple "C:\Python\scripts.."si vous êtes sur Windows.
- A relative path est un chemin qui ne commence pas avec le répertoire racine de votre ordinateur, et est plutôt relative à quelque chose appelé le
working directory
. Vous pouvez consulter le répertoire de travail actuel de Python en appelantos.getcwd()
.
si vous essayez de faire open('sortedLists.yaml')
, Python verra que vous lui passez un chemin relatif, donc il cherchera le fichier dans le répertoire de travail courant. Appeler os.chdir
changera le répertoire courant.
exemple: disons que file.txt
se trouve dans C:\Folder
.
Pour l'ouvrir, vous pouvez do:
os.chdir(r'C:\Folder')
open('file.txt') #relative path, looks inside the current working directory
ou
open(r'C:\Folder\file.txt') #full path
le fichier peut être existant mais avoir un chemin différent. Essayez d'écrire le chemin absolu vers le fichier.
Try os.listdir()
fonction pour vérifier qu'atleast python voit le fichier.
essayez comme ceci:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
très probablement, le problème est que vous utilisez un chemin de fichier relatif pour ouvrir le fichier, mais le répertoire de travail courant n'est pas défini à ce que vous pensez qu'il est.
C'est une idée fausse commune que les chemins relatifs sont relatives à l'emplacement du script python, mais c'est faux. Les chemins relatifs des fichiers sont toujours relatifs au répertoire de travail courant, et le répertoire de travail courant n'a pas à être localisation de votre script python.
vous avez trois options:
-
utilisez un chemin absolu pour ouvrir le fichier:
file = open(r'C:\path\to\your\file.yaml')
-
générer le chemin du fichier relatif à votre script python:
from pathlib import Path script_location = Path(__file__).absolute().parent file_location = script_location / 'file.yaml' file = file_location.open()
(Voir aussi: Comment obtenir le chemin et le nom du fichier qui est actuellement l'exécution? )
-
modifier le répertoire courant avant d'ouvrir le fichier:
import os os.chdir(r'C:\path\to\your\file') file = open('file.yaml')
D'autres erreurs courantes qui pourraient causer une erreur "fichier non trouvé" comprennent:
-
utilisation accidentelle de séquences d'échappement dans un chemin de fichier:
path = 'C:\Users\newton\file.yaml' # Incorrect! The '\n' in 'Users\newton' is a line break character!
pour éviter de faire cette erreur, n'oubliez pas d'utiliser littérales de chaîne brutes pour les chemins de fichier:
path = r'C:\Users\newton\file.yaml' # Correct!
(Voir aussi: chemin Windows en Python )
-
oubliant que Windows n'affiche pas les extensions de fichier:
depuis Windows n'affiche pas les extensions de fichier connues, parfois quand vous pensez que votre fichier est nommé
file.yaml
, il est en fait nomméfile.yaml.yaml
. Vérifiez l'extension de votre fichier.
la configuration d'exécution doit être changée
du changement...>>> aller à la configuration d'exécution... aller à>>> Python exécuter voir votre nom de code que vous allez lancer si elle est fausse ,......supprimez ce nom de code inutile....et puis l'exécuter avec les arguments appropriés