计数按数字增加,而不是数字

时间:2016-08-16 16:05:16

标签: python string

在这个python函数中,保存时文件编号增加1。 它正确地从filename1到filename10,然后跳转到111,1112,11111等,而不是继续使用filename11。 它出了什么问题?

for f in notepad.getFiles():                                                 
    if os.path.isfile(f[0]):                                         
        notepad.activateBufferID(f[1])                               
        if notepad.getCurrentBufferID() == f[1]:                     
            notepad.save()                                           
    else:                                                            
        notepad.activateBufferID(f[1])                               
        if notepad.getCurrentBufferID() == f[1]:                     
            counter = 0                                              
            filename = f[0]                                          
            while os.path.isfile(NewFileDir + filename + NewFileExt):
                counter += 1                                         
                filename = filename[:-1] + str(counter)              
            notepad.saveAs(NewFileDir + filename + NewFileExt)  

1 个答案:

答案 0 :(得分:5)

违规行在这里:

filename = filename[:-1] + str(counter)

您修剪一个字符并添加计数器。当计数器为单个数字时,这适用于文件名:

filename8 -> filename + 9
filename9 -> filename + 10

但是当计数器超过一位数时失败:

filename10 -> filename1 + 11
filename111 -> filename11 + 12

一种解决方案是使用len(str(counter))代替硬编码[:-1]。另一种方法是分别存储基本文件名,而不是在你去的时候改变它。