Por alguna razón, mi código está teniendo problemas para abrir un archivo simple:
Este es el código:
file1 = open('recentlyUpdated.yaml')
Y el error es:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
la ruta completa al archivo y nada parece funcionar. os.listdir()
para ver la lista de archivos en el directorio de trabajo actual os.getcwd()
(si os.getcwd()
su código desde un IDE, es posible que esté en un directorio diferente) os.chdir(dir)
, dir
es la carpeta donde se encuentra el archivo, luego abra el archivo con el nombre que estaba haciendo. open
. dir = r'C:\Python32'
'C:\\User\\Bob\\...'
'C:/Python32'
y no necesitan escaparse. Permítanme aclarar cómo Python encuentra los archivos:
working directory
. Puede ver el directorio de trabajo actual de Python llamando a os.getcwd()
. Si intenta open('sortedLists.yaml')
, Python verá que le está pasando una ruta relativa, por lo que buscará el archivo dentro del directorio de trabajo actual. Llamar a os.chdir
cambiará el directorio de trabajo actual.
Ejemplo: Digamos que file.txt
se encuentra en C:\Folder
.
Para abrirlo, puedes hacer:
os.chdir(r'C:\Folder') open('file.txt') #relative path, looks inside the current working directory
o
open(r'C:\Folder\file.txt') #full path
El archivo puede existir pero puede tener una ruta diferente. Intenta escribir la ruta absoluta para el archivo.
Pruebe la función os.listdir()
para comprobar que al menos Python ve el archivo.
Pruébalo así:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
Probablemente, el problema es que está utilizando una ruta de archivo relativa para abrir el archivo, pero el directorio de trabajo actual no está configurado como cree que es.
Es un error común pensar que las rutas relativas son relativas a la ubicación de la secuencia de comandos de python, pero esto no es cierto. Las rutas de archivo relativas siempre son relativas al directorio de trabajo actual, y el directorio de trabajo actual no tiene que ser la ubicación de su script de Python.
Tienes tres opciones:
Use una ruta absoluta para abrir el archivo:
file = open(r'C:\path\to\your\file.yaml')
Genere la ruta al archivo en relación con su script de python:
from pathlib import Path script_location = Path(__file__).absolute().parent file_location = script_location / 'file.yaml' file = file_location.open()
(Ver también: ¿Cómo obtengo la ruta y el nombre del archivo que se está ejecutando actualmente? )
Cambie el directorio de trabajo actual antes de abrir el archivo:
import os os.chdir(r'C:\path\to\your\file') file = open('file.yaml')
Otros errores comunes que podrían causar un error de “archivo no encontrado” incluyen:
Accidentalmente utilizando secuencias de escape en una ruta de archivo:
path = 'C:\Users\newton\file.yaml' # Incorrect! The '\n' in 'Users\newton' is a line break character!
Para evitar cometer este error, recuerde usar literales de cadena sin formato para las rutas de archivo:
path = r'C:\Users\newton\file.yaml' # Correct!
(Ver también: ruta de Windows en Python )
Olvidando que Windows no muestra las extensiones de archivo:
Dado que Windows no muestra las extensiones de archivo conocidas, a veces cuando piensa que su archivo se llama file.yaml
, en realidad se llama file.yaml.yaml
. Compruebe la extensión de su archivo.