文件存在时增加文件名中的数字

时间:2018-04-06 20:27:16

标签: python increment os.path

我仍然是Python的新手(3)。我有一个BUNCH的传感器数据,但下载限制迫使我以块的形式检索数据而不是一次性检索(每个.zip文件下载包含一个文件夹的.csv文件,用于在给定时间内每个传感器的数据期)。因此,我有几十个大的.csv文件分布在几个文件夹中,我最终想要为每个传感器的完整数据连接/合并/附加到一个.csv文件中。为了使事情变得更复杂,每个传感器的.csv文件名在文件夹中是相同的。我开发了以下代码来重命名并将文件移动到一个文件夹中,以便稍后我可以连接/合并/追加。它工作正常,除了我插入新文件名的数字没有递增。

import os
path = r"C:\directory\sensordatafolders" #folders with .csv files
newPath = r"C:\directory\new" #destination for renamed files
for root, dirs, files in os.walk(path):
    for name in files:
        base, extension = os.path.splitest(name)
        if not os.path.exists(os.path.join(newPath, base + extension))
             oldfile = os.path.join(os.path.abspath(root), name)
             newfile = os.path.join(newPath, base + extension)
             os.rename(oldfile, newfile)
        else:
             i = 1
             oldfile = os.path.join(os.path.abspath(root), name)
             newfile = os.path.join(newPath, base + '_' + str(i) + extension)
             i +=1
             os.rename(oldfile, newfile)

在第二个循环(* .csv和* _1.csv文件成功移动)之后,它使我无法在该文件已存在时创建文件'错误。这是因为(我认为)它不断尝试创建* _1.csv文件而不是递增到* _2.csv等。

1 个答案:

答案 0 :(得分:2)

你的

i = 1 

在不应该存在之后,它会将i设置为1,从而始终将i的值设为2,尝试将其置于for语句之外