no such file or directory python
Python open() proporciona IOError: Errno 2 No existe tal archivo o directorio (5)
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'')
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''
- Naturalmente, comprobé que este es el nombre correcto del archivo.
- He intentado moverme por el archivo, dando a
open()
la ruta completa al archivo y nada parece funcionar.
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 para lo que 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 relativo a 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 llamafile.yaml.yaml
. Comprueba dos veces la extensión de tu archivo.
Necesitas dar la ruta absoluta donde está el archivo.
la configuración de ejecución necesita ser cambiada
cambiar ... >>> ir a ejecutar la configuración ... ir a >>> Python ejecutar ver el nombre del código que ejecutará si está mal, ... eliminar el código innecesario ... y luego ejecutarlo con argumentos adecuados
- 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 está con
os.getcwd()
(sios.getcwd()
su código desde un IDE, es posible que esté en un directorio diferente) - Usted puede entonces:
- Llame a
os.chdir(dir)
,dir
es la carpeta donde se encuentra el archivo, luego abra el archivo con su nombre como lo estaba haciendo. - Especifique una ruta absoluta al archivo en su llamada
open
.
- Llame a
- Recuerde usar una cadena en bruto si su ruta usa barras diagonales inversas, así:
dir = r''C:/Python32''
- Si no usa una cadena sin formato, debe escapar de cada barra diagonal inversa:
''C://User//Bob//...''
- Las barras diagonales hacia adelante también funcionan en Windows
''C:/Python32''
y no necesitan escaparse.
- Si no usa una cadena sin formato, debe escapar de cada barra diagonal inversa:
Permítanme aclarar cómo Python encuentra los archivos:
- Una ruta absoluta es una ruta que comienza con el directorio raíz de su computadora, por ejemplo ''C: / Python / scripts ..'' si está en Windows.
- Una ruta relativa es una ruta que no comienza con el directorio raíz de su computadora y, en cambio, es relativa a algo que se llama el
working directory
. Puede ver el directorio de trabajo actual de Python llamando aos.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