我正在为每个类创建文件夹以放置资源。这些类的文件夹名称遵循以下(非常原始的)格式; '(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)”?
另外,有没有更有效的方法来制作这些文件夹?出于某种原因,我觉得行太多了。
答案 0 :(得分:0)
使用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)
答案 1 :(得分:0)
是否有办法使这些名称成为'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})')
答案 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)
您还可以避免将某些中间值另存为列表。