Подтвердить что ты не робот

Открыть файл в режиме "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" должен создать файл, если он не существует, правильно? Итак, как может произойти эта ошибка?

4b9b3361

Ответ 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

абсолютный путь + мкдр заранее