簡體   English   中英

python通過擴展名分隔文件並相應地保存到文件夾中

[英]python separate file by extension and save into folder accordingly

我正在獲取文件名作為實例,文件很容易保存到數據庫中,根本沒有問題。 但是我需要檢查文件擴展名並將文件保存到單獨這樣

我期望像這樣的單獨文件擴展名的輸出並相應地保存

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獲取擴展名:

def content_file_name(instance, filename):
    name, ext = os.path.splitext(filename)
    ext = ext.lstrip(".")                          # Remove leading dot
    if ext in ("jpg", "jpeg", "png"):
        subdir = "phots"
    elif ext in ("txt", "asc"):
        subdir = "text"
    else:
        subdir = extension
    upload_dir = os.path.join('uploads', 'resource', subdir)
    return os.path.join(upload_dir, filename)

您可以使用.endswith功能並檢查

    if filename.endswith("jpg") or silename.endswith("jpeg"):
         subdir = "phots"
    elif filename.endswith("txt") or filename.endswith("asc"):
         subdir = "docs"

我更喜歡映射,而不是if / else語句,因為它更具擴展性。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM