我正在尝试创建一个脚本,该脚本将在每次运行脚本时创建一个文件夹。我希望名称以增加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)
答案 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,因此仅创建一个文件夹。