Форум сайта python.su
Доброй ночи!
Начинаю изучать Питон. Пишу программу для автоматического создания папок. Нужно спросить при запуске два параметра (дата и номер) потом по шаблону создать папки используя эти параметры. Использую модуль OS. Получается только создать папку находящуюся в каталоге где лежит скрипт Питона. При попытке создать в этой папке вложенную в неё папку возникает ошибка. А как сделать подстановку моих параметров в имя папки вообще не представляю. Пытался читать хелп на английском, мало помогло…
Что-то русскоязычной литературы по Питону маловато.. С английским плоховато, надо подучить…Есть ли переведенный хелп на русский язык? Использую Питон 3.2.3..
Офлайн
klerk87
А как сделать подстановку моих параметров в имя папки вообще не представляю.
>>> namefmt = 'name_{0}_{1}' >>> >>> a, b = 1, 2 >>> name = namefmt.format(a, b) >>> print(name) name_1_2 >>>
klerk87приведи код
При попытке создать в этой папке вложенную в неё папку возникает ошибка.
Офлайн
Есть два метода:
mkdir Создается только одна папка. Рекурсивное создание невозможно.
os.mkdir("Имя_будущей_папки")
os.makedirs("Путь_с_именем_будущей_папки")
os.chdir("Путь_к_новой_рабочей_папке")
os.getcwd()
def create_folder(path, date): os.chdir(path) os.mkdir(str(data))
"c:\\Program\\data"
r"c:\Program\data"
Отредактировано 4kpt (Авг. 8, 2013 02:16:04)
Офлайн
nomer = input(….)
import os
os.makedirs(nomer)
в таком варианте работает, создается папка, к примеру 2100.
добавляем кавычки:
os.makedirs(“nomer”) - создается папка nomer
если создавать папку, вкладывая её в другую:
os.makedirs(kiwi\\nomer), то какие варианты кавычек ни ставь, создается не папка 2100, а с именем nomer. Как это побороть?
Офлайн
Конечно. Вы пытаетесь в строковой переменной передаль значение переменной. А интерпретатор, бедолага, должен понять, что вы имеете ввиду. Он же ждет, что ему передадут строку. Необходимо предварительно эту строку сфоримировать. И передать ему, как родному :)
Смотрите:
new_path = "kiwi\\%s" % (nomer) os.makedirs(new_path)
new_path = "kiwi\\2100"
new_path = "kiwi\\5250"
a = 12 # Число b = "12" # Строка c = a*2 # 24 e = b*2 # "1212" f = "a" # Строка. Это не ссылка на переменную а! r = f*3 # "aaa"
Отредактировано 4kpt (Авг. 8, 2013 19:36:02)
Офлайн
это я понял, спасибо!
А как одновременно подставить 3 параметра? Есть номер, день и месяц. Нужно их подставить в строку вида: temp\\nomer\\COD_dd-mm-2013. чтобы в итоге получить строку
temp\\2077\\COD_09-08-2013 для создания папки.
Отредактировано klerk87 (Авг. 9, 2013 10:07:51)
Офлайн
klerk87Такое ощущение, что вы издеваетесь:
А как одновременно подставить 3 параметра?
>>> day = 9 >>> month = 8 >>> year = 2013 >>> new_path = "temp\\2077\\COD_%02d-%02d-%04d" % (day,month,year) >>> new_path 'temp\\2077\\COD_09-08-2013'
>>> new_path = "temp\\2077\\COD_{0}-{1}-{2}".format(day,month,year) >>> new_path 'temp\\2077\\COD_9-8-2013'
Отредактировано alexbadaloff (Авг. 9, 2013 12:53:47)
Офлайн
alexbadaloff
Посмотрите .zfill() - метод строк…
Офлайн
alexbadaloffpython.org. str.format()
Но тут я не знаю, как перед 9 и 8, по умолчанию ставить 0. Сходу нагуглить не получилось, подскажите, кто знает.
>>> '{:02}'.format(1) '01' >>>
Офлайн
Еще можно:
"%02u" %(1)
Отредактировано 4kpt (Авг. 9, 2013 22:01:32)
Офлайн