2012-08-30 16 views
24

Per qualche motivo, il mio codice, che era abituato a lavorare, ha ora problemi nell'apertura di un semplice file .yaml. Ho provato a spostare il file, dando a open() il percorso completo del file e nessuno di esso sembra funzionare. Ho visto che questa domanda è stata fatta un paio di volte prima, ma non ho visto nessuna risposta che risolvesse il problema.python metodo open() IOError: [Errno 2] Nessun file o directory di questo tipo:

Qualsiasi consiglio su come chiamare il file, dove spostare il file o suggerimenti di altri metodi da utilizzare sarà molto apprezzato!

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 

l'errore è:

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

Naturalmente ho controllato che questo è il nome corretto del file.

risposta

26

Assicurarsi che il file esista. È quindi possibile:

  • chiamata os.chdir(dir), dir essendo la cartella in cui il file è situato , quindi aprire il file con solo il suo nome come se stessi facendo.
  • Specificare un percorso assoluto per il file nella chiamata open.

Ricordatevi di usare una stringa cruda se il percorso utilizza le barre rovesciate, come così: dir = r'C:\Python32'

Se è andato con il metodo chdir, è possibile chiamare os.listdir() per vedere l'elenco dei file nella directory di lavoro corrente .

Lasciatemi chiarire come Python trova i file. Un percorso assoluto è un percorso che inizia con la directory principale del computer, ad esempio "C: \ Python \ scripts .." se si è su Windows. Un percorso relativo è un percorso che non inizia con la directory principale del computer ed è invece relativo a qualcosa chiamato working directory. È possibile visualizzare la directory di lavoro corrente di python chiamando os.getcwd().

Se si tenta di eseguire open('sortedLists.yaml'), python vedrà che si sta passando un percorso relativo, quindi cercherà il file all'interno della directory di lavoro corrente. La chiamata a os.chdir cambierà la directory di lavoro corrente.

Diciamo che file.txt si trova in `C: \ Folder '.

Per aprirlo, si può fare:

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

Quando si utilizza os.chdir (dir), devo inserire il percorso per il directory o solo il nome della directory? Inoltre, una volta ottenuto il nome del file, lo metto in open() o scrivo open (os.chdir (dir))? – Santiago

+0

@Santiago ho chiarito questo nella mia risposta. – Lanaru

+1

+ 1 per stringa grezza r '' – WKordos

4

Il file può essere esistente, ma può avere un percorso diverso. Prova a scrivere il percorso assoluto per il file.

Prova la funzione os.listdir() per verificare che atleast python veda il file.

Provalo come:

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

+1

non sembra riconoscere alcun percorso di file sul mio computer. C'è un modo per cercare un file? @sshekar – Santiago

+0

grazie per questo suggerimento. – Led

-1

run configuration need to be changed

cambiamento ... >>> vai a eseguire la configurazione ... andare a >>> Python eseguire vedere il tuo nome in codice che si sta per eseguire se è sbagliato, ... cancellare quel nome in codice non necessario .... e quindi eseguirlo con gli argomenti appropriati

+0

In nessuna parte su questa domanda si dice che Eclipse è in uso. – Nogoseke

Problemi correlati