python - 如何将数字添加到 s3bucket 和 postgrsql 中的文件名
问题描述
我想知道如何在文件名中添加序列号。这样如果我上传一个新文件,例如flower.jpg,然后第二次或第三次上传相同的文件名,我会得到flower.jpg、flower(1).jpg 和flower(2).jpg 等。
如何在 python 和 s3 存储桶中编写这段代码。
我使用 python 和 s3 存储桶使用此代码为文件名添加了时间戳,但我想对其进行修改,以便它使用序列号。
try:
filename = filedata.name
file_name, extension = splitext(filename)
now = datetime.datetime.now()
timestamp = int(datetime.datetime.timestamp(now))
curntfilename = file_name + str(timestamp) + extension
isexist = False
for key in s3.list_objects(Bucket=settings.S3_BUCKET_BUCKET_NAME)['Contents']:
folder = key['Key']
if folder == (folder_path):
isexist = True
data = s3.upload_fileobj(filedata, settings.S3_BUCKET_BUCKET_NAME, '%s/%s' % (folder_path, curntfilename))
return HttpResponse(json.dumps(data))
if isexist == False:
s3.upload_fileobj(filedata, settings.S3_BUCKET_BUCKET_NAME, '%s/%s' % (folder_path , curntfilename))
print("Upload Successful")
return curntfilename
except FileNotFoundError:
print("The file was not found")
return False
except NoCredentialsError:
print("Credentials not available")
return False
def upload_to_aws(filedata,filename,timestamp,company_id,folder_id,size,status,created_by,folder_path):
s3 = boto3.client('s3', aws_access_key_id=settings.S3_BUCKET_BUCKET_AccessKeyId,
aws_secret_access_key=settings.S3_BUCKET_BUCKET_SecretAccessKey)
try:
file_name, extension = splitext(filename)
curntfilename = file_name + str(timestamp) + extension
isexist = False
for key in s3.list_objects(Bucket=settings.S3_BUCKET_BUCKET_NAME)['Contents']:
解决方案
推荐阅读
- c++ - void 函数不能将整数除以 99
- python - 使用 Python 删除 FASTA 中的重复序列
- c# - 按时间顺序在列表中插入对象
- python - 不使用 if 语句的数字比较
- arm - 在 arm64 GICv3 中捕获 IRQ 的步骤?
- internet-explorer-11 - 适合对象:封面和 IE11
- powershell - -WhatIf 控制台返回的更多详细信息?
- sql - SQL中的where子句条件
- db2 - 用于 DB2 表 REORG 调用的 flyway 的生产部署步骤
- c# - INSERT 语句与 net core 中的 FOREIGN KEY 约束冲突