2010-03-30 2 views
1

Я пытаюсь переименовать некоторые файлы, но получаю непонятную ошибку *. Когда я запускаю это:Почему мой os.rename не работает?

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

Я получаю следующее сообщение об ошибке:

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 

Поскольку я знаю, что файл на FULLPATH существует, я сбит с толку ошибки. Конечно, newFilePath не существует, потому что это было бы глупо. Любые намеки?

Спасибо! Alex

* Не все?

+0

Вы пытались жестко закодировать os.rename() с полным путем и newFilePath, которые у вас есть? – ccheneson

+5

Меня постоянно удивляют люди, которые вынимают то, что считают неважной информацией, но, вероятно, нет. Не препятствуйте тем, кто пытается вам помочь. Во что бы то ни стало скрывать _sensitive_ информацию, но не имя файла в ситуации, когда ОС говорит, что он не может найти этот файл :-) На минимальном уровне просто замените чувствительные биты: /gov/nsa/keys.txt =>/неважно /company/file.txt – paxdiablo

+0

Um, хорошо, если это действительно помогает - заменить отредактированные строки со следующим: /groups/baker/vaughana/Data/10.03.25_Set4_25C/20100325T131243_260hz_gaussian_35msIPI_300s.wav_-10_Cam1/20100325T131243_260hz_gaussian_35msIPI_300s.wav_-10_Cam1 .fmf /groups/baker/vaughana/originalData/20100325T131243_260hz_gaussian_35msIPI_300s.wav_-10_Cam1.fmf Это говорит о том, что, перепродав его, я снова посмотрел на него и заметил, что путь dest был неправильным, так что это победа. – 2010-03-30 00:32:32

ответ

1

Вы все еще можете получить исключение, если попытаетесь скопировать в каталог, который не существует.

+0

Отлично, спасибо! Я подтвердил, что newFilePath не существует (как и не должно), но каталог dest был неправильным. – 2010-03-30 00:28:12

1

Я не могу увидеть все внутренние работы вашего кода, так вот мои два цента стоит:

Ваш newFilePath может содержать каталог, который не существует. Если это так, то в зависимости от вашей операционной системы ваша программа не может создать файл в директории, которая не существует. Это может быть вашей ошибкой.

Надеется, что это помогает

0

Похожи, что плакат решил свою проблему, но у меня было один и тот же симптом, а причина оказалась иными. Файл, который я пытался переименовать, только что был создан в вызове подпроцесса в предыдущей строке. Если я снова запустил свой сценарий, у меня не было проблемы с переименованием, поскольку файл был создан в предыдущем прогоне, но если я удалю ранее созданный файл, у меня возникнет проблема с переименованием. Кажется, что os.rename вызывался до того, как был завершен подпроцесс, и файл, который нужно переименовать, поэтому еще не существует. Я вставил os.wait() после вызова подпроцесса, и я считаю, что это решило мою проблему.

0

У меня была такая же ошибка, когда мое новое имя файла содержало косые черты, которые смешиваются с разделителями каталогов в Unix и Linux. Например, переименование файла на «4/27/2015.txt» приводит к каталогу, который не существует, и приводит к «Нет такого файла или каталога». Вы можете решить эту проблему, заменив косые черты любым другим приемлемым символом.

+0

Это похоже на действительный ответ, хотя и на основе ошибочной предпосылки, что входные имена файлов содержат символы «/». –

Смежные вопросы