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 la suivante:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
le chemin d'accès complet au fichier, mais rien ne semble fonctionner.os.listdir()
pour voir la liste des fichiers du répertoire de travail actuelos.getcwd()
(si vous lancez votre code à partir d'un IDE, vous risquez de vous trouver dans un autre répertoire).os.chdir(dir)
, dir
étant le dossier dans lequel se trouve le fichier, puis ouvrez le fichier avec juste son nom, comme vous le faisiez.open
.dir = r'C:\Python32'
'C:\\User\\Bob\\...'
'C:/Python32'
et ne nécessitent pas d'échappement.Permettez-moi de préciser comment Python trouve les fichiers:
working directory
. Vous pouvez afficher le répertoire de travail actuel de Python en appelant os.getcwd()
.Si vous essayez de faire open('sortedLists.yaml')
, Python verra que vous lui transmettez un chemin relatif, donc il recherchera le fichier dans le répertoire de travail en cours. L'appel de os.chdir
changera le répertoire de travail actuel.
Exemple: supposons que file.txt
se trouve dans C:\Folder
.
Pour l'ouvrir, vous pouvez faire:
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 peut avoir un chemin différent. Essayez d’écrire le chemin absolu du fichier.
Essayez la fonction os.listdir()
pour vérifier qu'au moins python voit le fichier.
Essayez comme ça:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
Très probablement, le problème est que vous utilisez un chemin d'accès relatif pour ouvrir le fichier, mais le répertoire de travail en cours n'est pas défini sur ce que vous pensez qu'il est.
Il est courant de croire à tort que les chemins relatifs sont relatifs à l'emplacement du script python, mais cela est faux. Les chemins de fichiers relatifs sont toujours relatifs au répertoire de travail actuel, et le répertoire de travail actuel ne doit pas nécessairement être l'emplacement 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érez le chemin d'accès au fichier par rapport à 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 puis-je obtenir le chemin et le nom du fichier en cours d'exécution? )
Modifiez le répertoire de travail actuel avant d'ouvrir le fichier:
import os
os.chdir(r'C:\path\to\your\file')
file = open('file.yaml')
Les autres erreurs courantes pouvant provoquer une erreur "fichier non trouvé" incluent:
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 commettre cette erreur, pensez à utiliser littéraux de chaîne brute pour les chemins de fichiers:
path = r'C:\Users\newton\file.yaml'
# Correct!
(Voir aussi: chemin Windows sous Python )
Oublier que Windows n'affiche pas les extensions de fichiers:
Comme Windows n’affiche pas les extensions de fichier connues, il arrive parfois que vous pensiez que votre fichier s’appelle file.yaml
, mais il s’appelle en fait file.yaml.yaml
. Vérifiez l'extension de votre fichier.
Vous avez peut-être fermé le 'fichier1'.
Il suffit d'utiliser l'indicateur 'w' pour créer un nouveau fichier:
file1 = open('recentlyUpdated.yaml', 'w')
mode est une chaîne facultative qui spécifie le mode dans lequel le fichier est ouvert. La valeur par défaut est "r", ce qui signifie ouvert pour la lecture en mode texte. Les autres valeurs communes sont 'w' pour l'écriture (tronquant le fichier s'il existe déjà) ...
(voir aussi https://docs.python.org/3/library/functions.html?highlight=open#open )