Создание файлов и каталогов через 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