我正在尝试使用os.makedirs()工具创建143个文件夹,但我遇到了一些麻烦。我一次只能生成一个文件夹,我想立刻制作所有文件夹。我希望这些文件夹通过IMG_00160命名为IMG_0016。
我想过用计数器尝试for循环,其中每个循环都会将新数字添加到文件夹标题的末尾,但我无法让它工作。
import os
for folders in range(0, 143):
count = 0016
os.makedirs("C:\\Users\joshuarb\Desktop\Organized_Images\IMG"+count)
count = count+1
答案 0 :(得分:3)
您将在每次循环迭代中重新声明count = 0016
。把它放在循环外面。
import os
count = 0016
for folders in range (0, 143):
os.makedirs("C:\\Users\joshuarb\Desktop\Organized_Images
IMG"+count)
count = count+1
答案 1 :(得分:2)
使用直接数字更容易,更易读(请注意,您希望在range()
调用中使用161,因为不包括最后一个数字):
import os
for count in range (16, 161):
os.makedirs("C:\\Users\joshuarb\Desktop\Organized_Images\IMG_{:04d}".format(count))
另请注意,我使用宽度为4的零填充,因为IMG_0016和IMG_00160的命名约定不同所以我选择限制为DOS通常的8个字符。根据您的需要进行调整。
答案 2 :(得分:1)
首先,对于这种任务,没有必要使用临时变量。使用可能并且应该使用迭代范围的变量。
其次,range
默认创建范围为0,因此您可以删除左边距边界。对于您的特定任务,最好的方法是迭代所需的时间间隔:从16到160。
第三,在Windows中,最好使用原始字符串来存储路径或屏蔽每个反斜杠,因为单个反斜杠被识别为元符号的开头。
最新的事情是,建议在加入字符串时使用format
。
因此,最终解决方案可能如下所示:
import os
base_path = "C:\\Users\\joshuarb\\Desktop\\Organized_Images\\"
dir_basename = "IMG_00"
for index in range(16, 161):
os.makedirs("{}{}{}".format(base_path, dir_basename, index))
答案 3 :(得分:0)
停止手动跟踪count
并使用range
的结果:
first_num = 16
folder_count = 143
base_path = r"C:\Users\joshuarb\Desktop\Organized_Images"
for folder_num in range(first_num, first_num + folder_count):
os.makedirs(os.path.join(base_path, "IMG"+str(folder_num).zfill(4)))
答案 4 :(得分:0)
import os
for folders in range(1,5):
os.makedirs(os.getcwd()+'/folder00'+ str(folders))
如果同一目录中的目标提供了一些路径
,请使用os.getcwd()