我试图编写一个函数,该函数将路径名和文件名分配给基于文件名(而不是文件夹中存在)的变量。然后,如果文件名已经存在,则文件名将自动递增。我已经看到了一些使用while循环的帖子,但是我对此一无所知,想将其包装在一个递归函数中。
这是我到目前为止所拥有的。使用打印语句进行测试时,每个方法都可以正常工作。但是它不会将新名称返回给主程序。
def checkfile(ii, new_name,old_name):
if not os.path.exists(new_name):
return new_name
if os.path.exists(new_name):
ii+=1
new_name = os.path.join(os.path.split(old_name)[0],str(ii) + 'snap_'+ os.path.split(old_name)[1])
print new_name
old_name = “D:\Bar\foo”
new_name= os.path.join(os.path.split(old_name)[0],”output_” + os.path.split(old_name)[1])
checkfile(0,new_name,old_name)
python大神给出的解决方案
虽然我不建议为此使用递归(Python的堆栈在大约1000个函数调用处最大),但是您只是缺少递归位的返回:
new_name= os.path.join(os.path.split(old_name)[0],”output_” + os.path.split(old_name)[1])
checkfile(0,new_name,old_n