Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 8, 2013 00:19:03

klerk87
Зарегистрирован: 2013-08-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

Доброй ночи!
Начинаю изучать Питон. Пишу программу для автоматического создания папок. Нужно спросить при запуске два параметра (дата и номер) потом по шаблону создать папки используя эти параметры. Использую модуль OS. Получается только создать папку находящуюся в каталоге где лежит скрипт Питона. При попытке создать в этой папке вложенную в неё папку возникает ошибка. А как сделать подстановку моих параметров в имя папки вообще не представляю. Пытался читать хелп на английском, мало помогло…
Что-то русскоязычной литературы по Питону маловато.. С английским плоховато, надо подучить…Есть ли переведенный хелп на русский язык? Использую Питон 3.2.3..

Офлайн

#2 Авг. 8, 2013 02:04:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9896
Репутация: +  855  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

klerk87
А как сделать подстановку моих параметров в имя папки вообще не представляю.
>>> namefmt = 'name_{0}_{1}'
>>> 
>>> a, b = 1, 2
>>> name = namefmt.format(a, b)
>>> print(name)
name_1_2
>>>

klerk87
При попытке создать в этой папке вложенную в неё папку возникает ошибка.
приведи код



Офлайн

#3 Авг. 8, 2013 02:09:00

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

Есть два метода:

mkdir Создается только одна папка. Рекурсивное создание невозможно.

os.mkdir("Имя_будущей_папки")
makedirs Создается рекурсивно (если в пути папки отсутсвуют - то они будут созданы).
os.makedirs("Путь_с_именем_будущей_папки")

Кроме того необходимо помнить, что многие комманды пляшут от рабочей паки.
Чтобы сменить рабочую папку надо
os.chdir("Путь_к_новой_рабочей_папке")
А рабочую папку можно узнать
os.getcwd()


Приведу пример кода функции для создания папки по указанному пути с указанной датой
def create_folder(path, date):
    os.chdir(path)
    os.mkdir(str(data))

P.S. Не забывайте, что для указания пути необходимо использовать два обратных слеша или сырые строки, т.е. путь “c:\Program\data” будет выглядеть
"c:\\Program\\data"
или
r"c:\Program\data"



Отредактировано 4kpt (Авг. 8, 2013 02:16:04)

Офлайн

#4 Авг. 8, 2013 14:05:06

klerk87
Зарегистрирован: 2013-08-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

nomer = input(….)
import os
os.makedirs(nomer)
в таком варианте работает, создается папка, к примеру 2100.

добавляем кавычки:
os.makedirs(“nomer”) - создается папка nomer

если создавать папку, вкладывая её в другую:
os.makedirs(kiwi\\nomer), то какие варианты кавычек ни ставь, создается не папка 2100, а с именем nomer. Как это побороть?

Офлайн

#5 Авг. 8, 2013 19:34:48

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

Конечно. Вы пытаетесь в строковой переменной передаль значение переменной. А интерпретатор, бедолага, должен понять, что вы имеете ввиду. Он же ждет, что ему передадут строку. Необходимо предварительно эту строку сфоримировать. И передать ему, как родному :)
Смотрите:

new_path = "kiwi\\%s" % (nomer)
os.makedirs(new_path)
Первая строчка в результате подстановки получится следующего вида:
Если nomer равен 2100
new_path = "kiwi\\2100"
Если nomer равен 5250
new_path = "kiwi\\5250"
Надеюсь теперь понятно :)

P.S. Для закрепления

a = 12    # Число
b = "12"  # Строка
c = a*2   #  24
e = b*2   # "1212"
f = "a"   # Строка. Это не ссылка на переменную а!
r = f*3   # "aaa"



Отредактировано 4kpt (Авг. 8, 2013 19:36:02)

Офлайн

#6 Авг. 9, 2013 09:48:38

klerk87
Зарегистрирован: 2013-08-08
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

это я понял, спасибо!
А как одновременно подставить 3 параметра? Есть номер, день и месяц. Нужно их подставить в строку вида: temp\\nomer\\COD_dd-mm-2013. чтобы в итоге получить строку
temp\\2077\\COD_09-08-2013 для создания папки.

Отредактировано klerk87 (Авг. 9, 2013 10:07:51)

Офлайн

#7 Авг. 9, 2013 12:52:59

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

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'

Еще вариант, использовать .format:
>>> new_path = "temp\\2077\\COD_{0}-{1}-{2}".format(day,month,year)
>>> new_path
'temp\\2077\\COD_9-8-2013'
Но тут я не знаю, как перед 9 и 8, по умолчанию ставить 0. Сходу нагуглить не получилось, подскажите, кто знает.



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Авг. 9, 2013 12:53:47)

Офлайн

#8 Авг. 9, 2013 16:26:16

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

alexbadaloff
Посмотрите .zfill() - метод строк…



Офлайн

#9 Авг. 9, 2013 21:23:12

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9896
Репутация: +  855  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

alexbadaloff
Но тут я не знаю, как перед 9 и 8, по умолчанию ставить 0. Сходу нагуглить не получилось, подскажите, кто знает.
python.org. str.format()

>>> '{:02}'.format(1)
'01'
>>>



Офлайн

#10 Авг. 9, 2013 22:01:18

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Как создать папки по шаблону используя два параметра?

Еще можно:

"%02u" %(1)



Отредактировано 4kpt (Авг. 9, 2013 22:01:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version