Pergunta

Estou tentando renomear alguns arquivos, mas recebendo um erro desconcertante*. Quando eu corro isto:

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

Estou tendo o erro a seguir:

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

Desde que eu conhecer Que o arquivo no FullPath existe, estou confuso com o erro. Obviamente, o NewFilePath não existe, porque isso seria burro. Alguma dica?

Obrigado! Alex

*Eles não são todos?

Foi útil?

Solução

Você ainda pode obter a exceção se tentar copiar para um diretório que não existe.

Outras dicas

Não consigo ver o funcionamento interno completo do seu código, então aqui estão meus dois centavos:

Seu newFilePath pode conter um diretório que não existe. Se for esse o caso, dependendo do seu sistema operacional, seu programa não pode criar um arquivo em um diretório que não exista. Esse pode ser o seu erro.

Espero que isto ajude

Parece que o pôster resolveu seu problema, mas eu tive o mesmo sintoma e a causa parecia ser diferente. O arquivo que eu estava tentando renomear acabara de ser criado em uma chamada de subprocesso na linha anterior. Se eu executasse meu script novamente, não tive o problema de renomeação, já que o arquivo havia sido criado na execução anterior, mas se eu excluísse o arquivo criado anteriormente, eu teria o mesmo problema com a renomeação. Parece que o OS.Rename estava sendo chamado antes que o subprocesso fosse concluído e o arquivo a ser renomeado, portanto, ainda não existia. Inseri um OS.Wait () após a chamada de subprocesso e acredito que isso resolveu meu problema.

Eu tive o mesmo erro quando meu novo nome de arquivo continha barras para a frente, que são confundidas com os separadores de diretórios no Unix e no Linux. Por exemplo, renomear um arquivo para "4/27/2015" leva a um diretório que não existe e resulta em "nenhum arquivo ou diretório". Você pode resolver isso substituindo as barras para a frente por qualquer outro caractere aceitável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top