Python如何避免文件同名产生覆盖

在一些不多的数据下载和生成的时候,我们倾向于直接保存为文件,当我们修改某些参数后再一次运行时,之前运行时生成的文件就被覆盖了。为了解决这个问题,这里提供几个解决方案。

1. 判断文件是否存在;

2. 判断是否带有”0)“这种数字带括号的格式;

3. 文件名添加”(0), (1), (2)….“之类的编号。

以下是代码:

import os
import re

def auto_save_file(path):
  directory, file_name = os.path.split(path)
  while os.path.isfile(path):
    pattern = '(\d+)\)\.'
    if re.search(pattern, file_name) is None:
      file_name = file_name.replace('.', '(0).')
    else:
      current_number = int(re.findall(pattern, file_name)[-1])
      new_number = current_number + 1
      file_name = file_name.replace(f'({current_number}).', f'({new_number}).')
    path = os.path.join(directory + os.sep + file_name)
  return path

如果使用如下创建文件的代码测试:

path = r'D:\test.txt'
for i in range(10):
  with open(auto_save_file(path), 'w') as f:
    f.write('This is a test!')

结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实现批量修改文件名

    python3实现批量修改文件名,供大家参考,具体内容如下 以批量修改某文件夹下所有图片名称为例,注释超详细,万能模板,读者可举一反三,适当修改模板,效果显著! #批量修改文件名 #批量修改图片文件名 import os import re import sys def renameall(): fileList = os.listdir(r"C:\Users\Administrator\Desktop\stars") #待修改文件夹 print("修改前:"+st

  • python实现遍历文件夹图片并重命名

    在做深度学习相关项目时,需要标注图片,筛选过后图片名字带有括号,显得比较乱,因此利用python进行统一规范重命名操作 实现方法是利用python的os模块对文件夹进行遍历(listdir),然后使用rename进行改名操作 代码如下 # -*- coding:utf8 -*- import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def __init__(self): self.path = 'C:/Users/lenovo/Desktop

  • python批量替换文件名中的共同字符实例

    今天看新概念视频的时候播放器PotPlayer的播放列表总是不能正确排序,我看到这些视频的名字格式如下: Lesson 1-2 单词解读.mp4 我认为是数字前面的Lesson和空格干扰了播放器的排序,就考虑把这个文件夹下所有的文件名批量删除Lesson和空格,使之变成: 1-2 单词解读.mp4 这里主要使用的就是os模块下的listdir,chadir和rename三个方法 虽然最后还是排序不正确,我只能怪播放器不好了. 代码如下 # -*- coding: UTF-8 -*- import

  • Python实现获取当前目录下文件名代码详解

    一. 小背景: 事情是这样的:本学期小崔又担任好多课代表,其中英语科课程中老师布置了一项作业并需要我收集,为提高英语作业完成率呢,需要每天统计作业的上交情况,并将名单公示,由于处在疫情期间的大学生最近网课和打卡系列活动那么多,况且小崔最近比较'懒',能够用一个python命令来完成这个工作量何乐而不为呢! 二. 实现过程 实现环境 Windows10     python 3 [这个是菜鸟教程里的python3环境搭建](https://www.runoob.com/python3/python

  • Python文件路径名的操作方法

    1 文件路径名操作 对于文件路径名的操作在编程中是必不可少的,比如说,有时候要列举一个路径下的文件,那么首先就要获取一个路径,再就是路径名的一个拼接问题,通过字符串的拼接就可以得到一个路径名.Python中3.4版本前使用os.path模块中的函数来操作路径名:3.4版本开始提供pathlib模块,使用Path对象来对目录和文件进行操作. 2 os.path模块 from os import path p = path.join('/etc', 'sysconfig', 'network') #

  • python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法

    1.获得盘名os.path.splitdrive(path) import os path="C:\\Users\\wuyanzu\\x1.jpg" drive,rem=os.path.splitdrive(path) print(drive) print(rem) #输出: C: \Users\wuyanzu\x1.jpg 2.获得路径与文件名os.path.split(path) import os path="C:\\Users\\wuyanzu\\x1.jpg&quo

  • python 获取当前目录下的文件目录和文件名实例代码详解

    os模块下有两个函数: os.walk() os.listdir() # -*- coding: utf-8 -*- import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 print(files) #当前路径下所有非目录子文件 输出格式为: 当前文件目录路径 当前路径下子文件目录(若存在, 不存在则为 []

  • python实现批量文件重命名

    本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除. 即将图中文件前的编号删除. Python实现 用到了python中的os模块,os模块中的rename方法可以实现对文件的重命名 import os #path为批量文件的文件夹的路径 path = 'd:\\renamefolder' #文件夹中所有文件的文件名 file_names = os.listdir(path) #外循环遍历所有文件名,

  • Python如何避免文件同名产生覆盖

    在一些不多的数据下载和生成的时候,我们倾向于直接保存为文件,当我们修改某些参数后再一次运行时,之前运行时生成的文件就被覆盖了.为了解决这个问题,这里提供几个解决方案. 1. 判断文件是否存在: 2. 判断是否带有"0)"这种数字带括号的格式: 3. 文件名添加"(0), (1), (2)-."之类的编号. 以下是代码: import os import re def auto_save_file(path): directory, file_name = os.pa

  • Python 创建新文件时避免覆盖已有的同名文件的解决方法

    思路:创建文件时,先检查是否有同名文件(使用os.path.isfile),如果有,则在文件名后加上编号n来创建. 关键点: 1. 使用os.path.isfile判断文件是否存在 2. 使用递归函数判断 2. 添加编号时, 使用可变list 传值n=[0] 完整代码如下: import os def check_filename_available(filename): n=[0] def check_meta(file_name): file_name_new=file_name if os

  • python 读写csv文件方式(创建,追加,覆盖)

    目录 python 读写csv文件 创建 追加 读 附加 批量生成csv文件 下面来一个简单的范例 python 读写csv文件 创建 利用csv包中的writer函数,如果文件不存在,会自动创建,需要注意的是,文件后缀一定要是.csv,这样才会创建csv文件 这里创建好文件,将csv文件的头信息写进了文件. import csv def create_csv():     path = "aa.csv"     with open(path,'wb') as f:         c

  • python高手之路python处理excel文件(方法汇总)

    用python来自动生成excel数据文件.python处理excel文件主要是第三方模块库xlrd.xlwt.xluntils和pyExcelerator,除此之外,python处理excel还可以用win32com和openpyxl模块. 方法一: 小罗问我怎么从excel中读取数据,然后我百了一番,做下记录 excel数据图(小罗说数据要给客户保密,我随手写了几行数据): python读取excel文件代码: #!/usr/bin/env python # -*- coding: utf-

  • python 剪切移动文件的实现代码

    扫描某文件夹下所有文件(包括子文件夹中的文件),使用os.walk;os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 移动复制文件通过os.rename方法,先进行文件是否存在判断,如需更加复杂相同文件判断可以根据文件属性进行判断,此处只使用同名检查,并删除已存在文件,来实现覆盖. import os path="C:/Users/kele/Desktop/testfloader" targetpath="C:/Users/kele/Desk

  • python提取word文件中的所有图片

    前言 办公中,偶尔会碰到一种情况,需要提取word文档中的图片,决定写这样一款工具自动提取图片. 关于脚本的使用: 情景1:如果你拿到的是一个文件夹,所有的word文件都在这个文件夹的子目录下,深度为1层,你可以直接使用该脚本 情景2:如果你拿到的是一个文件夹,打开之后,里面杂乱无章的充斥着各种文件,你也不确定word文档都在哪,那么你需要使用Everything来手动提取出所有的word文档,虽然我也可以让脚本实现这个功能,但是使用脚本需要考虑到有可能存在同名文件,再处理起来代码量会更大,还是

  • 浅析python中特殊文件和特殊函数

    目录 导入模块 导入包 特殊文件 1.__init__.py文件 2..pyc与.pyo文件 特殊函数 1.构造函数 2.析构函数 3.静态函数和类函数 4.以下划线开头的函数 单线划:_var 单末尾下划线var_ 双前导下划线:__var 双前导和双末尾下划线var 单下划线 导入模块 模块通常为单独的.py文件,可以用import直接引用,可以作为模块的文件类型有.py..pyo..pyc..pyd..so..dll在导入模块时,解释器做以下工作: 已导入模块的名称创建新的命名空间,通过该

  • Python编程密码学文件加密与解密代码解析

    目录 本章要点 1 纯文本文件 2 使用置换密码加密文件的源代码 transpositionFileCipher.py 3 运行置换密码加密文件程序的样例 4 文件操作 4.1 打开文件 4.2 数据写入及文件关闭 4.3 读取文件 5 创建main()函数 6 检查文件是否存在 6.1 os.path.exists() 方法 6.2 使用os.path.exists()方法检查输入的文件是否存在 7 使用字符串方法令用户的输入更灵活 7.1 upper().lower()和title()字符串

  • python基础_文件操作实现全文或单行替换的方法

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 1.替换文本中的taste 为 tasting Yesterday when I was young 昨日当我年少轻狂 The taste of life was sweet 生命的滋味是甜的 As rain upon my tongue #将文件读取到内存中 with open("./fileread.txt","r",encoding

  • python异常和文件处理机制详解

    本文实例讲述了python异常和文件处理机制.分享给大家供大家参考,具体如下: 1 异常处理 Python的异常用 try except finally 来处理. 并且except后还可以跟 else . 引发异常用 raise 如果抛出的异常没有被处理. 在Python IDE中是显示一些红色的信息. 在真正的Python程序运行时. 会导致程序终止. 在以前我们已经见到过一下几种异常: 在 Dictionary 中如果使用的 key 不存在. 会引发 KeyError 异常. 如: >>&

随机推荐