Skip to main content
 首页 » 编程设计

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

2025年05月04日8jyk

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