有没有更有效的方法来创建文件夹?

时间:2019-04-08 08:11:41

标签: python python-3.x windows-10

我正在为每个类创建文件夹以放置资源。这些类的文件夹名称遵循以下(非常原始的)格式; '(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类,文件夹名称是“ Class(1)... Class(9)”。是否有办法使这些名称成为“ Class(01)... Class(09)”?
另外,有没有更有效的方法来制作这些文件夹?出于某种原因,我觉得行太多了。

3 个答案:

答案 0 :(得分:0)

使用str.zfillos.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)

答案 1 :(得分:0)

  

是否有办法使这些名称成为'Class(01)... Class(09)'?

f'{foo:02}'会将您的数字零填充到2个小数位。如果您需要动态它,则必须使用zfill

您无需先创建zfolders

如何?

>>> import os
>>> path=r'C:\Users\Desktop\Classes\Class ('
>>> for i in range(1,30):
...     os.makedirs(f'{path}{i})')

答案 2 :(得分:0)

假设您使用的是相对较新的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)

您还可以避免将某些中间值另存为列表。