繁体   English   中英

重命名一个已经存在的文件

[英]Rename a file that already exists

我正在学习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)

更换:

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
)

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

import os
filenames = os.listdir()

our_filename = "foo"
cur = 0
cur_filename = "foo"
extension = ".txt"
while(True):
    if (cur_filename) in filenames:
         cur += 1
         cur_filename = our_filename + str(cur) + extension
    else:
         # found a filename that doesn't exist
         f = open(cur_filename,'w')
         f.write(stuff)
         f.close()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM