Solución:
- Asegúrese de que el archivo exista: use
os.listdir()
para ver la lista de archivos en el directorio de trabajo actual - Asegúrese de estar en el directorio en el que cree que se encuentra
os.getcwd()
(si lanza su código desde un IDE, es posible que esté en un directorio diferente) - Entonces puede:
- Llama
os.chdir(dir)
,dir
siendo la carpeta donde se encuentra el archivo, luego abra el archivo con solo su nombre como lo estaba haciendo. - Especifique una ruta absoluta al archivo en su
open
llama.
- Llama
- Recuerde usar una cadena sin formato si su ruta usa barras invertidas, así:
dir = r'C:Python32'
- Si no usa una cadena sin formato, debe escapar de cada barra invertida:
'C:\User\Bob\...'
- Las barras diagonales también funcionan en Windows
'C:/Python32'
y no necesitas escapar.
- Si no usa una cadena sin formato, debe escapar de cada barra invertida:
Permítanme aclarar cómo Python encuentra archivos:
- Un camino absoluto es una ruta que comienza con el directorio raíz de su computadora, por ejemplo, ‘C: Python scripts ..’ si está en Windows.
- A camino relativo es una ruta que no comienza con el directorio raíz de su computadora, sino que es relativa a algo llamado
working directory
. Puede ver el directorio de trabajo actual de Python llamandoos.getcwd()
.
Si intentas hacer open('sortedLists.yaml')
, Python verá que le está pasando una ruta relativa, por lo que buscará el archivo dentro del directorio de trabajo actual. Vocación os.chdir
cambiará el directorio de trabajo actual.
Ejemplo: digamos file.txt
se encuentra en C:Folder
.
Para abrirlo, puede hacer:
os.chdir(r'C:Folder')
open('file.txt') #relative path, looks inside the current working directory
o
open(r'C:Folderfile.txt') #full path
Lo más probable es que el problema sea 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 del script 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:
-
Utilice una ruta absoluta para abrir el archivo:
file = open(r'C:pathtoyourfile.yaml')
-
Genere la ruta al archivo relativa a su secuencia de comandos de Python:
from pathlib import Path script_location = Path(__file__).absolute().parent file_location = script_location / 'file.yaml' file = file_location.open()
(Consulte 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:pathtoyourfile') file = open('file.yaml')
Otros errores comunes que pueden causar un error de “archivo no encontrado” incluyen:
-
Uso accidental de secuencias de escape en una ruta de archivo:
path="C:Usersnewtonfile.yaml" # Incorrect! The 'n' in 'Usersnewton' is a line break character!
Para evitar cometer este error, recuerde utilizar literales de cadena sin formato para las rutas de archivo:
path = r'C:Usersnewtonfile.yaml' # Correct!
(Ver también: ruta de Windows en Python)
-
Olvidando que Windows no muestra extensiones de archivo:
Dado que Windows no muestra extensiones de archivo conocidas, a veces, cuando cree que su archivo tiene un nombre
file.yaml
, en realidad se llamafile.yaml.yaml
. Vuelva a verificar la extensión de su archivo.
El archivo puede existir pero puede tener una ruta diferente. Intente escribir la ruta absoluta del archivo.
Tratar os.listdir()
función para comprobar que al menos Python ve el archivo.
Pruébelo así:
file1 = open(r'Drive:DirrecentlyUpdated.yaml')