gpt4 book ai didi

python - 为什么这个 try/except/else 函数返回 None?

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:35 24 4
gpt4 key购买 nike

<分区>

我正在尝试创建一个目录。如果名称已存在,则递归地将“_1”附加到目录名称。

如果该目录尚不存在,这会正常运行。如果目录已经存在,它也可以正常运行(它创建目录+“_1”并返回相同的目录)。但是,如果目录 + "_1"已经存在,则该函数会创建目录 +"_1_1"但返回 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

为什么在异常情况下返回None?

编辑:如果存在“existing_folder”,Nneoneo 的答案有效,但如果存在“existing_folder”和“existing_folder_1”,则无法正常运行。修改后,功能为

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

如果“existing_folder”已经创建:

>>> recurs_mkdir("existing_folder")
Returning: existing_folder_1
Returning: existing_folder_1
existing_folder_1

如果“existing_folder”和“existing_folder_1”已经存在:

>>> recurs_mkdir("existing_folder")
Returning: existing_folder_1_1
Returning: existing_folder_1_1
Returning: existing_folder_1
existing_folder_1

编辑 2: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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com