#python #python-3.x #windows-10
#python #python-3.x #windows-10
Вопрос:
Я создаю папки для каждого класса для размещения ресурсов. Имена папок для классов соответствуют следующему (очень оригинальному) формату; ‘Class (01), Class (02), …, Class (63)’.
Я использовал следующий код для создания папок, но ищу более эффективный метод.
>>> import os
>>> path=r'C:UsersDesktopClassesClass ('
>>> z=[str(i) for i in range(1,30)]
>>> folders=[path z[i] ')' for i in range(len(z))]
>>> for i in range(len(folders)):
... os.makedirs(folders[i])
Я получаю папки, но для классов 1-9 имена папок ‘Class (1) … Класс (9)’. Есть ли способ сделать так, чтобы эти имена были ‘Class (01) … Class (09)’?
Кроме того, есть ли более эффективный способ создания этих папок? По какой-то причине я чувствую, что строк слишком много.
Ответ №1:
Используйте str.zfill
и os.path.join
:
import os
path = '/pardir/'
folders = [os.path.join(path, "Class (%s)" % str(i).zfill(2)) for i in range(1,64)]
for folder in folders:
os.makedirs(folder)
Output:
/pardir/Class (01)
/pardir/Class (02)
...
/pardir/Class (62)
/pardir/Class (63)
Ответ №2:
Есть ли способ сделать так, чтобы эти имена были ‘Class (01) … Class (09)’?
f'{foo:02}'
обнулит ваш номер до 2 знаков после запятой. Если вам нужно, чтобы он был динамическим, вы должны использовать zfill
.
Вам не нужно создавать z
или folders
вручную.
Как насчет этого:
>>> import os
>>> path=r'C:UsersDesktopClassesClass ('
>>> for i in range(1,30):
... os.makedirs(f'{path}{i})')
Ответ №3:
Предполагая, что вы используете относительно современную версию Python, вы можете указать левое заполнение с помощью строки формата,
import os
for class_num in range(1, 30):
folder_name = r"C:UsersDesktopClassesClass ({:02d})".format(
class_num
)
os.makedirs(folder_name)
Также вы можете избежать сохранения некоторых промежуточных значений в виде списков.