Python OS - 检查文件是否存在,如果存在重命名,再次检查,然后保存

新手上路,请多包涵

我有一个脚本,它从一个表单中获取一个文件,重命名它并将它上传到一个文件夹并将记录插入到数据库中。我想在保存文件之前添加功能,它会检查上传文件夹以确定文件名是否存在。如果确实存在,则循环重命名文件,然后保存文件。

我目前拥有的:

 file = request.files['xx']
extension = os.path.splitext(file.filename)[1]
xx = str(uuid.uuid4()) + extension
## if xx exists .. xx = str(uuid.uuid4()) + extension.. loop endlessly.
file.save(os.path.join(app.config['UPLOAD_FOLDER'], xx)

原文由 user7731688 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 776
2 个回答

尚未对此进行测试,但您可以使用 os.path.isfile() 检查文件是否已存在(对于目录,使用 os.path.exists )。

 import os

def save():
    file = request.files['xx']
    extension = os.path.splitext(file.filename)[1]

    xx = generate_filename(extension)

    file.save(os.path.join(app.config['UPLOAD_FOLDER'], xx))

def generate_filename(extension):
    xx = str(uuid.uuid4()) + extension
    if os.path.isfile(os.path.join(app.config['UPLOAD_FOLDER'], xx)):
        return generate_filename(extension)
    return xx

原文由 jyap 发布,翻译遵循 CC BY-SA 3.0 许可协议

这将检查一个文件是否存在,并通过增加一个数字来生成一个不存在的新名称:

 from os import path

def check_file(filePath):
    if path.exists(filePath):
        numb = 1
        while True:
            newPath = "{0}_{2}{1}".format(*path.splitext(filePath) + (numb,))
            if path.exists(newPath):
                numb += 1
            else:
                return newPath
    return filePath

原文由 Ariel Montes 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题