python - Why does this try/except/else function return None? -
i trying create directory. if name exists, appends "_1" directory name recursively.
this runs fine if directory not exist already. runs fine if directory exists (it creates directory+"_1" , returns same). however, if directory + "_1" exists, function creates directory+"_1_1" returns none.
import os def recurs_mkdir(out_dir): try: os.mkdir(out_dir) except oserror: out_dir += "_1" recurs_mkdir(out_dir) else: print "returning: %s" % out_dir return out_dir >>> print recurs_mkdir("existing_folder") returning: existing_folder_1 none
why return none in case of exception?
edit: nneoneo's answer works if "exisiting_folder" exists, not behave if "existing_folder" , "existing_folder_1" exist. modified, function is
import os def recurs_mkdir(out_dir): try: os.mkdir(out_dir) except oserror: out_dir += "_1" recurs_mkdir(out_dir) print "returning: %s" % out_dir return out_dir else: print "returning: %s" % out_dir return out_dir
if "existing_folder" created:
>>> recurs_mkdir("existing_folder") returning: existing_folder_1 returning: existing_folder_1 existing_folder_1
if "existing_folder" , "existing_folder_1" exist:
>>> recurs_mkdir("existing_folder") returning: existing_folder_1_1 returning: existing_folder_1_1 returning: existing_folder_1 existing_folder_1
edit 2: answer nneoneo
import os def recurs_mkdir(out_dir): try: os.mkdir(out_dir) except oserror: out_dir += "_1" return recurs_mkdir(out_dir) else: print "returning: %s" % out_dir return out_dir
because no return
statement invoked @ in case of exception, function returns default value of none
(this same return value you'd if wrote bare return
statement without return value).
add return
statement except
clause return whatever want.
Comments
Post a Comment