我写了一个函数来在python中创建一个目录。如果已经采用原始名称,该函数会将例如_1的扩展名添加到directoryname。 该函数按预期工作并创建文件夹;但是返回值有问题。当我打印出来时,我得到了无。这是我的代码。可能不是最干净的:s。这与在函数内调用自身有关,但我不确定如何修复它。
import os
##function to generate a dir with extension if it already exists
def createDir(directory,ext):
thePath=directory+ext
if not os.path.exists(thePath):
os.makedirs(thePath)
output=thePath + '/'
print 'I return ' + output #I got "I return /media/usb0/incomplete_noNameYet_2/ (Because incomplete_noNameYet and incomplete_noNameYet_1 already existed)" This is fine!
return output
else:
if ext =='':
ext='_1'
else:
ext= '_' + str(int(ext[1:len(ext)])+1)
createDir(directory,ext)
def main():
print createDir('/media/usb0/incomplete_noNameYet','') #I got none.
if __name__ == '__main__':
main()
答案 0 :(得分:4)
您忽略了递归调用的返回值;在那里添加return
:
return createDir(directory,ext)
否则返回createDir()
的返回值,并且父函数调用返回时没有明确的return
调用,默认为None
。
答案 1 :(得分:1)
问题是在else分支上,您正在调用createDir而不返回该值。对createDir的初始调用执行后两个递归调用(包括它们的副作用),但随后丢弃返回值并返回None。