当前位置: 首页 > 编程笔记 >

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

公孙辰龙
2023-03-14
本文向大家介绍Python 创建新文件时避免覆盖已有的同名文件的解决方法,包括了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.path.isfile(file_name):
      file_name_new=file_name[:file_name.rfind('.')]+'_'+str(n[0])+file_name[file_name.rfind('.'):]
      n[0]+=1
    if os.path.isfile(file_name_new):
      file_name_new=check_meta(file_name)
    return file_name_new
  return_name=check_meta(filename)
  return return_name
with open(check_filename_available('t.txt'),'w') as f:
  f.write('Checking func!')

以上这篇Python 创建新文件时避免覆盖已有的同名文件的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我只想有一个,将工作簿的内容写入应用程序中的文件中,并在此 excel 中创建多个工作表。我正在使用Apache POI来读取/写入我的excel。我有以下方法这样做 - 我在这里面临的问题是,每次我调用时,都会创建一个新文件,并且存量数据会被覆盖。我只想要一个文件,并且需要将新的工作表添加到我现有的文件中。我如何实现这一点?

  • 问题内容: 目前,我有一个循环,试图通过在文件名字符串中添加后缀来查找未使用的文件名。一旦找不到文件,它将使用无法以该名称打开新文件的名称。问题在于此代码用于网站中,并且可能多次尝试同时执行同一操作,因此存在竞争条件。 如果在检查时间和另一个线程中的打开时间之间创建了一个文件,如何防止python覆盖现有文件。 我可以通过将后缀随机化来最小化机会,但是根据路径名的各个部分,机会已经被最小化了。我想

  • 假设我想从许多xmls中编写具有以下格式的文本输出。其中一些xml文件可能没有节点[name、age、schood]的值。 <学生> 因此,基本上我使用的是iu正在使用的一个xsl文件,并试图通过考虑这些类似格式的xml文件(具有不同的节点值)来生成输出。 但是我只需要将相应的输出写到具有特定条件的xml文件中。[假设有一个名称,因为有些xml文件不包含名称值]。 因此,如果我有5个xml文件要转

  • 问题内容: 我的模型与现场 函数根据图像文件名命名。 但是,当用户更新头像时,新的头像名称与旧的头像名称一致,并且Django在文件名中添加后缀。 有办法覆盖文件而不是创建新文件吗? 问题答案: 是的,这对我也很重要。这就是我所做的。 模型: 还定义在中: 在另一个文件中,: 显然,这些是这里的示例值,但是总体而言,这对我来说效果很好,并且根据需要进行修改应该非常简单。

  • 问题内容: 我想知道是否可以创建多个具有相似名称的文件,而不会覆盖当前文件。 例如:如果我有一个文件:下次创建时xyz.txt应该是:xyz(1).txt 因此,如果我重新运行该程序,则当前文件不会被覆盖。我已经尝试过,如果带有标志变量的条件将数字添加为文件名的前缀。 我想知道是否有任何Java命令来避免覆盖现有文件。 问题答案: 我想知道是否有任何本地Java命令停止覆盖[并将数字添加到文件名中

  • 问题内容: 此功能无效,并引发错误。我是否需要更改任何参数或参数? 问题答案: 如果文件不存在,将失败。 您可以使用,如果该文件不存在,则会创建该文件,但是它将截断现有文件。 另外,您可以使用; 如果该文件不存在,则会创建该文件,但不会截断现有文件。