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


Posted in Python onJune 09, 2020

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

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!')

结果如下:

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

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

Python 相关文章推荐
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
在Python中用split()方法分割字符串的使用介绍
May 20 Python
Python可变参数函数用法实例
Jul 07 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
Python3 socket同步通信简单示例
Jun 07 Python
python实现二维插值的三维显示
Dec 17 Python
Python 写入训练日志文件并控制台输出解析
Aug 13 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python判断两个序列的成员是否一样的实例代码
Mar 01 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 #Python
Python嵌入C/C++进行开发详解
Jun 09 #Python
Keras load_model 导入错误的解决方式
Jun 09 #Python
如何用python处理excel表格
Jun 09 #Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 #Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 #Python
Python导入数值型Excel数据并生成矩阵操作
Jun 09 #Python
You might like
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
培养自己的php编码规范
2015/09/28 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
JQuery删除DOM节点的方法
2015/06/11 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
Python中的True,False条件判断实例分析
2015/01/12 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
了解AppleTalk协议吗
2014/04/01 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
元旦晚会活动总结
2014/07/09 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书