Есть ли более эффективный способ создания папок? - PullRequest
0 голосов
/ 08 апреля 2019

Я создаю папки для каждого класса для размещения ресурсов. Имена папок для классов следуют следующему (очень оригинальному) формату;'Class (01), Class (02), ..., Class (63)'.

Я использовал следующий код для создания папок, но ищу более эффективный метод.

>>> import os
>>> path=r'C:\Users\Desktop\Classes\Class ('
>>> 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 имена папок: «Класс (1) ... Класс (9)».Есть ли способ сделать так, чтобы эти имена были «Class (01) ... Class (09)»?
Кроме того, есть ли более эффективный способ сделать эти папки?Почему-то я чувствую, что слишком много строк.

Ответы [ 3 ]

0 голосов
/ 08 апреля 2019

Есть ли способ сделать так, чтобы эти имена были 'Class (01) ... Class (09)'?

f'{foo:02}' обнулит ваш номер до 2 десятичных знаков. Если вам нужно, чтобы оно было динамичным, вы должны использовать zfill.

Вам не нужно создавать z или folders перед раздачей.

Как насчет этого:

>>> import os
>>> path=r'C:\Users\Desktop\Classes\Class ('
>>> for i in range(1,30):
...     os.makedirs(f'{path}{i})')
0 голосов
/ 08 апреля 2019

Предполагая, что вы используете относительно современную версию Python, вы можете указать отступ слева с помощью строки формата,

import os

for class_num in range(1, 30):
    folder_name = r"C:\Users\Desktop\Classes\Class ({:02d})".format(
        class_num
    )

    os.makedirs(folder_name)

Также вы можете избежать сохранения некоторых промежуточных значений в виде списков.

0 голосов
/ 08 апреля 2019

Используйте 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...