Создание файлов и каталогов через Python

Мне не удается создать каталог, а затем открыть/создать/записать в файл в указанном каталоге. Причина мне кажется непонятной. Я использую os.mkdir() и

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
if not os.path.exists(path):
    os.mkdir(path)
temp_file=open(path+'/'+img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

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

OSError: [Errno 2] No such file or directory: 'Some Path Name'

Путь имеет форму "Имя папки с незанятыми пространствами"

Что я здесь делаю неправильно?


Обновление: я попытался запустить код без создания каталога

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
temp_file=open(img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

По-прежнему появляется ошибка. Дальше путают.


Обновление 2: Проблема кажется img_alt, в некоторых случаях она содержит "/" , что вызывает проблемы.

Поэтому мне нужно обработать "/" . Есть ли в любом случае, чтобы избежать "/" или исключить единственный вариант?

Ответы

Ответ 1

import os

path = chap_name

if not os.path.exists(path):
    os.makedirs(path)

filename = img_alt + '.jpg'
with open(os.path.join(path, filename), 'wb') as temp_file:
    temp_file.write(buff)

Ключевым моментом является использование os.makedirs вместо os.mkdir. Он является рекурсивным, т.е. Генерирует все промежуточные каталоги. См. http://docs.python.org/library/os.html

Откройте файл в двоичном режиме, когда вы храните двоичные (jpeg) данные.

В ответ на Изменить 2, если img_alt иногда имеет в нем "/":

img_alt = os.path.basename(img_alt)

Ответ 2

    import os
    os.mkdir('directory name') #### this command for creating directory
    os.mknod('file name') #### this for creating files
    os.system('touch filename') ###this is another method for creating file by using unix commands in os modules