这是我的 Python 2.7 脚本。
import os.path, shutil
def makeFolderName(num, dirBase='./interactive'):
destDir= dirBase + '-' + str(num) + '/'
if os.path.isdir(destDir):
num += 1
makeFolderName(num)
else:
shutil.copytree(dirBase, destDir)
print destDir
return destDir
folderName= makeFolderName(1)
print folderName
这是打印输出。
./interactive-18/
./interactive-17/
./interactive-16/
./interactive-15/
./interactive-14/
./interactive-13/
./interactive-12/
./interactive-11/
./interactive-10/
./interactive-9/
./interactive-8/
./interactive-7/
./interactive-6/
./interactive-5/
./interactive-4/
./interactive-3/
./interactive-2/
./interactive-1/
====./interactive-1/
在该方法中,我认为如果 destDir 的值不是目录,这只会打印 destDir。它而是从最高值到最低值打印 num。
而folderName的值是最低的num,而不是最高的。
我希望 makeFolderName 返回一个目录名称,其中 num 比当前目录中存在的目录高一个。
我做错了什么?
请您参考如下方法:
你的错误是你应该在递归调用之后返回:
if os.path.isdir(destDir):
num += 1
return makeFolderName(num)
else:
shutil.copytree(dirBase, destDir)
如果你不这样做,那么当makeFolderName返回时,这个函数会继续运行下面的代码,也就是打印num。但由于它是在递归调用返回后完成的,所以您会看到相反的数字。
