Python,函数输出不如预期

时间:2014-07-30 12:52:21

标签: python recursion directory

我写了一个函数来在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() 

2 个答案:

答案 0 :(得分:4)

您忽略了递归调用的返回值;在那里添加return

return createDir(directory,ext)

否则返回createDir()的返回值,并且父函数调用返回时没有明确的return调用,默认为None

答案 1 :(得分:1)

问题是在else分支上,您正在调用createDir而不返回该值。对createDir的初始调用执行后两个递归调用(包括它们的副作用),但随后丢弃返回值并返回None。