当前位置: 首页 > 面试题库 >

创建文件,但如果名称存在,则添加编号

宫元徽
2023-03-14
问题内容

Python是否有任何内置功能可将数字添加到文件名(如果已存在)?

我的想法是,它将按某些OS的工作方式工作-如果将文件输出到已经存在该名称文件的目录中,则它将添加数字或对其进行递增。

即:如果“ file.pdf”存在,它将创建“ file2.pdf”,并下次创建“ file3.pdf”。


问题答案:

从某种意义上说,Python在tempfile模块中内置了此功能。不幸的是,您必须利用私有全局变量tempfile._name_sequence。正式地,这意味着tempfile不能保证_name_sequence甚至在将来的版本中都存在-
这是实现细节。但是,如果您可以使用它,可以说明如何file#.pdf在指定的目录中创建具有唯一名称的表单文件,例如/tmp

import tempfile
import itertools as IT
import os

def uniquify(path, sep = ''):
    def name_sequence():
        count = IT.count()
        yield ''
        while True:
            yield '{s}{n:d}'.format(s = sep, n = next(count))
    orig = tempfile._name_sequence 
    with tempfile._once_lock:
        tempfile._name_sequence = name_sequence()
        path = os.path.normpath(path)
        dirname, basename = os.path.split(path)
        filename, ext = os.path.splitext(basename)
        fd, filename = tempfile.mkstemp(dir = dirname, prefix = filename, suffix = ext)
        tempfile._name_sequence = orig
    return filename

print(uniquify('/tmp/file.pdf'))


 类似资料:
  • 问题内容: 我发现了类似的问题,但在Linux / Bash中却找不到 我希望我的脚本使用给定名称(通过用户输入)创建一个文件,但是如果文件名已经存在,请在末尾添加数字。 例: 问题答案: 以下脚本可以为您提供帮助。您不应同时运行脚本的多个副本,以免出现竞争状况。

  • 这是我的代码: 每次执行程序时,我都会创建一个新文档,我只想在不存在的情况下创建它,如果文档存在,只需添加内容即可。

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 问题内容: 我注意到Swift中的一个常见模式是 因此,当您想“将一项添加到数组之一”时,您不能只 你必须 真的,有没有更快捷的方式来表达类似 尽管这是关于样式的 问题 ,但是由于 Swift 具有复制特性,因此 在Swift中触摸数组时 , 性能似乎是至关重要的问题 。 (请注意,显然您可以为此使用扩展名;这是关于Swiftiness的问题。) 问题答案: Swift 4更新: 从Swift 4

  • 问题内容: 在使用Bluehost进行WordPress安装时,我遇到了一些情况,由于没有上传文件夹,我的WordPress主题遇到了错误。 显然,尽管HostGator可以,Bluehost cPanel WordPress安装程序不会创建此文件夹。 因此,我需要向主题添加代码,以检查文件夹并以其他方式创建该文件夹。 问题答案: 尝试这个: 请注意,这已经是目录的默认模式,并且仍可以被当前的um

  • 问题内容: 我想使用Python在远程服务器上上传文件。我想事先检查远程路径是否确实存在,如果不存在,请创建它。用伪代码: 我正在考虑在Paramiko中执行命令来创建路径(例如)。我想出了这个: 但是这种解决方案对我来说听起来不太好,因为我先关闭了连接,然后再次重新打开。有更好的方法吗? 问题答案: SFTP支持常用的FTP命令(chdir,mkdir等),因此请使用以下命令: 要完全仿真,您可