python按扩展名分隔文件,并相应地保存到文件夹中
我得到的文件名作为实例和文件很容易保存到数据库没有任何问题。但是我需要检查文件扩展名,并像这样单独保存文件 我期望这样的输出 单独的文件扩展名并相应地保存python按扩展名分隔文件,并相应地保存到文件夹中,python,django,Python,Django,我得到的文件名作为实例和文件很容易保存到数据库没有任何问题。但是我需要检查文件扩展名,并像这样单独保存文件 我期望这样的输出 单独的文件扩展名并相应地保存 phots image1.jpg image2.jpg text text1.txt text2.txt 这是我的模型课 class Album(models.Model): file_upload = models.FileField(upload_to=content_file_name) name_conten
phots
image1.jpg
image2.jpg
text
text1.txt
text2.txt
这是我的模型课
class Album(models.Model):
file_upload = models.FileField(upload_to=content_file_name)
name_content = models.CharField(max_length=100)
函数就在这里
def content_file_name(instance, filename):
upload_dir = os.path.join('uploads', 'resource')
return os.path.join(upload_dir, filename)
使用splitext获取扩展名:
您可以使用.endswith功能并检查
if filename.endswith("jpg") or silename.endswith("jpeg"):
subdir = "phots"
elif filename.endswith("txt") or filename.endswith("asc"):
subdir = "docs"
与if/else语句相比,我更喜欢map语句,因为它更易于扩展
dir_map = {".jpg" : "photos",
".jpeg" : "photos",
".png" : "photos",
".txt" : "text",
".asc" : "text"
}
_, ext = os.path.splitext(filename)
subdir = dir_map.get(ext, "other")
return os.path.join("uploads", "resource", dir_map.get(ext, "other"), filename)
查看是否要向上传的文件添加时间戳,如timestampimage.jpg。如何操作?只需使用os.path.joinupload_dir,strdatetime.datetime.now+filename或使用格式化字符串os.path.joinupload_dir,{:%Y-%m-%dT%H%m%S}{}{}.formatdatetime.datetime.now,filename
dir_map = {".jpg" : "photos",
".jpeg" : "photos",
".png" : "photos",
".txt" : "text",
".asc" : "text"
}
_, ext = os.path.splitext(filename)
subdir = dir_map.get(ext, "other")
return os.path.join("uploads", "resource", dir_map.get(ext, "other"), filename)