Открыть файл в режиме "w": IOError: [Errno 2] Нет такого файла или каталога
Когда я пытаюсь открыть файл в режиме write со следующим кодом:
packetFile = open("%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file"), "w")
Дает мне следующую ошибку:
IOError: [Errno 2] No such file or directory: 'dir/dir2/dir3/some_file.mol2'
Режим "w" должен создать файл, если он не существует, правильно? Итак, как может произойти эта ошибка?
Ответы
Ответ 1
Вы увидите эту ошибку, если каталог, содержащий файл, который вы пытаетесь открыть, не существует даже при попытке открыть файл в режиме "w".
Так как вы открываете файл с относительным путем, возможно, вы запутались в том, что именно этот каталог. Попробуйте выполнить быструю печать:
import os
curpath = os.path.abspath(os.curdir)
packet_file = "%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file")
print "Current path is: %s" % (curpath)
print "Trying to open: %s" % (os.path.join(curpath, packet_file))
packetFile = open(packet_file, "w")
Ответ 2
Поскольку у вас нет "стартовой" косой черты, ваш python script ищет этот файл относительно текущего рабочего каталога (а не для корня файловой системы). Также обратите внимание, что каталоги, ведущие к файлу, должны существовать!
И: используйте os.path.join для объединения элементов пути.
например: os.path.join("dir", "dir2", "dir3", "myfile.ext")
Ответ 3
У меня была такая же ошибка, но в моем случае причина была в Windows более длиной ~ 250 символов.
Ответ 4
Убедитесь, что script имеет права на запись в этом каталоге. Попробуйте следующее:
chmod a+w dir/dir2/dir3
Обратите внимание, что это даст права на запись всем в этом каталоге.
Ответ 5
Аналогичная проблема возникла в среде Windows. Решение заключалось в том, чтобы добавить "C:" в абсолютный путь.
Моя цель состояла в том, чтобы сохранить некоторые файлы на рабочем столе пользователя
file_path = os.path.join(os.environ["HOMEPATH"], os.path.join("Desktop",
"log_file.log_%s_%s" %(
strftime("%Y_%m_%d", localtime()), "number_1")))
то я пытался открыть этот каталог, чтобы сохранить
таких как
file_ref = open(file_path, "w")
Я добавил это для запуска
file_ref = open(("C:\\"+file_path), "w")
Ответ 6
Эта ошибка также возникает, если вы пытаетесь перезаписать неработающую программную ссылку на файл с тем же именем. В этом случае удалите неработающую программную ссылку, и вы сможете записать новый файл.
Ответ 7
абсолютный путь + мкдр заранее