Python创建增量文件夹

时间:2020-01-27 19:32:07

标签: python directory

我正在尝试创建一个脚本,该脚本将在每次运行脚本时创建一个文件夹。我希望名称以增加1的数字结尾。因此,运行一次将获得我的folder1,再次运行将获得我的folder2,依此类推。我当前的代码运行一次并创建folder1和folder2,然后每次运行都会创建一个我想要的文件夹。为什么第一次运行时要制作2个文件夹?

import os

counter = 1
mypath =.     ('C:/Users/jh/Desktop/request'+(str(counter)) +'/')
if not os.path.exists(mypath):
    os.makedirs(mypath)
    print ("Path is created")

while os.path.exists(mypath):   
    counter +=1
    mypath = ('C:/Users/jh/Desktop/request'+(str(counter)) +'/')
   print(mypath)

os.makedirs(mypath)

3 个答案:

答案 0 :(得分:0)

之所以会这样,是因为您的代码实际上看起来像这样,删除了不必要的变量:

import os

counter = 1
mypath = 'C:/Users/jh/Desktop/request1/'
if not os.path.exists(mypath):
    os.makedirs(mypath)
    print ("Path is created")

while os.path.exists(mypath):   
    counter += 1
    mypath = 'C:/Users/jh/Desktop/request'+(str(counter)) +'/'
    print(mypath)

os.makedirs(mypath)

如您所见,“ request1”文件夹是在第一个程序运行时创建的,然后继续正常运行。这很容易解决,只需删除第一个if语句:

import os

counter = 1
mypath = 'C:/Users/jh/Desktop/request1/'

while os.path.exists(mypath):   
    counter += 1
    mypath = 'C:/Users/jh/Desktop/request'+(str(counter)) +'/'
    print(mypath)

os.makedirs(mypath)

我会删除多余的括号以提高可读性,并在可能的情况下使用f字符串。 mypath = f'C:/Users/jh/Desktop/request{counter}/'

答案 1 :(得分:0)

第一次运行时,它会检查路径是否存在,但不存在-因此它会按预期创建目录。

然后,程序继续运行,并检查它是否再次存在(因为您刚刚创建了它,所以它仍然存在),并创建了#2。

您可能希望将其切换为if / else。

答案 2 :(得分:0)

这是因为在第一次运行时您的基本路径不存在,因此它会创建一个。进一步在while循环中,它再次循环并创建另一个文件夹。对于所有后续运行,第一个if条件始终为false,因此仅创建一个文件夹。