2012-08-30 11 views
24

Por alguna razón, mi código, que solía funcionar, ahora tiene problemas para abrir un archivo .yaml simple. He intentado mover el archivo, dando a open() la ruta completa al archivo y nada parece funcionar. Vi que esta pregunta se había formulado un par de veces antes, pero no había respuestas que resolvieran el problema.método python open() IOError: [Errno 2] No existe ningún archivo o directorio:

Cualquier consejo sobre cómo llamar al archivo, dónde mover el archivo, o sugerencias de otros métodos para utilizar será muy apreciado!

def readYaml(): 
    file1 = open('recentlyUpdated.yaml') 
    print 'opened recently updated' 
    companyData = yaml.load(file1) 
    file1.close() 
    print 'read recentyl updated' 

    file2 = open('sortedLists.yaml') 
    sortedLists = yaml.load(file2) 
    file2.close() 

    return companyData, sortedLists 

el error es:

file1 = open('recentlyUpdated.yaml') 
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml' 

Naturalmente comprobado que este es el nombre correcto del archivo.

Respuesta

26

Asegúrese de que el archivo exista. Puede entonces:

  • llamada os.chdir(dir), dir siendo la carpeta donde está el archivo situado, a continuación, abra el archivo con sólo su nombre como que estaba haciendo.
  • Especifique una ruta de acceso absoluta al archivo en su llamada open.

Recuerde que debe utilizar una cadena prima si la ruta utiliza barras invertidas, como manera: dir = r'C:\Python32'

Si fue con el método chdir, puede llamar os.listdir() para ver la lista de archivos en el directorio de trabajo actual .

Déjenme 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 equipo, sino que es relativa a algo llamado working directory. Puede ver el directorio de trabajo actual de python llamando al os.getcwd().

Si intenta 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. Llamar al os.chdir cambiará el directorio de trabajo actual.

Digamos que file.txt se encuentra en `C: \ Folder '.

Para abrirlo, que puede 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 
+0

Al usar os.chdir (dir), ¿tengo que poner la ruta al directorio o solo el nombre del directorio? Además, una vez que obtengo el nombre del archivo, ¿lo pongo en abierto() o escribo abierto (os.chdir (dir))? – Santiago

+0

@Santiago Aclaré esto en mi respuesta. – Lanaru

+1

+ 1 para la cadena sin procesar r '' – WKordos

4

El archivo puede ser existente, pero puede tener un camino diferente. Intenta escribir la ruta absoluta del archivo.

Pruebe la función os.listdir() para comprobar que al menos python ve el archivo.

Inténtelo como:

file1 = open('Drive:\Dir\recentlyUpdated.yaml')

+1

parece que no reconoce ninguna ruta de archivos en mi computadora. ¿Hay alguna manera de que pueda buscar un archivo? @sshekar – Santiago

+0

gracias por este consejo. – Led

-1

run configuration need to be changed

cambio ... >>> Ir a ejecutar la configuración de ... van a ejecutar Python >>> ver su nombre en clave que se va para ejecutar si es incorrecto, ... eliminar ese nombre de código innecesario ... y luego ejecutarlo con los argumentos adecuados

+0

En ninguna parte de esta pregunta se menciona que se está utilizando Eclipse. – Nogoseke

Cuestiones relacionadas