Domanda

Sto cercando di rinominare alcuni file, ma ottenere un errore sconcertante *. Quando ho eseguito questo:

if os.path.isfile(fullPath):
    print 'fmf exists'
    print fullPath
    print newFilePath
    os.rename(fullPath,newFilePath)

ottengo il seguente errore:

fmf exists
(correct fullPath)
(correct newFilePath, ie. destination)
Traceback (most recent call last):
  File "whatever.py", line 374, in ?
    os.rename(fullPath,newFilePath)
OSError: [Errno 2] No such file or directory

Dal momento che I so che il file a fullPath esiste, io sto sconcertato dall'errore. Naturalmente, newFilePath non esiste, perché sarebbe stupido. Eventuali suggerimenti?

Grazie! Alex

* non sono tutti?

È stato utile?

Soluzione

È ancora possibile ottenere l'eccezione, se si tenta di copiare in una directory che non esiste.

Altri suggerimenti

Non riesco a vedere tutti i meccanismi interni del codice, quindi ecco i miei due centesimi vale la pena:

Il tuo newFilePath può contenere una directory che non esiste. Se questo è il caso, quindi a seconda del sistema operativo, il programma è in grado di creare un file in una directory che non esiste. Questo potrebbe essere il vostro errore.

Spero che questo aiuti

:

Sembra che il manifesto risolto il suo problema, ma ho avuto lo stesso problema e la causa sembrava essere diverso. Il file che stavo cercando di cambiare titolo era stato appena creato in una chiamata sottoprocesso sulla linea precedente. Se ho eseguito di nuovo il mio script, non ho avuto il problema di ridenominazione, dal momento che il file era stato creato nel periodo precedente, ma se ho cancellato il file creato in precedenza, avrei avuto lo stesso problema con ridenominazione. Sembra os.rename è stato sempre chiamato prima del sottoprocesso è stato completato e il file da rinominare quindi non esisteva ancora. Ho inserito un os.wait () dopo la chiamata sottoprocesso, e credo che questo ha risolto il mio problema.

Ho avuto lo stesso errore quando il mio nuovo nome del file conteneva le barre, che sono confusi con i separatori di directory in Unix e Linux. Ad esempio, rinominare un file a "4/27 / 2015.txt" porta a una directory che non esiste e si traduce in "No such file or directory". È possibile risolvere questo sostituendo lo slash con qualsiasi altro carattere accettabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top