重命名已存在的文件

时间:2017-11-21 18:07:11

标签: python python-3.x

我正在学习python和英语。我有一个可能很容易的问题,但我无法解决它。我有一个.txt的文件夹,我能够通过正则表达式提取每个文件的数字序列。我用从.txt

中提取的序列重命名每个文件
path_txt = (r'''C:\Users\user\Desktop\Doc_Classifier\TXT''')

for TXT in name_files3:
    with open(path_txt + '\\' + TXT, "r") as content:
        search = re.search(r'(([0-9]{4})(/)(([1][9][0-9][0-9])|([2][0-9][0-9][0-9])))', content.read())

    if search is not None:
        name3 = search.group(0)
        name3 = name3.replace("/", "")
        os.rename(os.path.join(path_txt, TXT),
                  os.path.join("Processos3", name3 + "_" + str(random.randint(100, 999)) + ".txt"))

我需要检查文件是否已经存在,并通过添加增量重命名。目前为了区分文件我在名称中添加一个随机数(random.randint(100,999))

PS:目前脚本通过正则表达式在.txt中找到“7526/2016”。除掉 ”/”。使用“75262016”+随机数重命名文件(例如:7526016_111)。我想检查文件是否已经存在,而不是使用随机数重命名,并使用增量重命名(例如:7526016_copy1,7526016_copy2)

2 个答案:

答案 0 :(得分:0)

替换:

os.rename(
    os.path.join(path_txt, TXT),
    os.path.join("Processos3", name3 + "_" + str(random.randint(100, 999)) + ".txt")
)

使用:

fp = os.path.join("Processos3", name3 + "_%d.txt")
postfix = 0

while os.path.exists(fp % postfix):
    postfix += 1

os.rename(
    os.path.join(path_txt, TXT),
    fp % postfix
)

答案 1 :(得分:-1)

下面的代码遍历当前工作目录中找到的文件,并查看基本文件名及其增量。一旦找到未使用的增量,它就会打开一个具有该名称的文件并写入该文件。因此,如果您已经拥有文件“foo.txt”,“foo1.txt”和“foo2.txt”,则代码将生成一个名为“foo3.txt”的新文件。

const engine = new Chess();