簡體   English   中英

我需要編寫Python腳本對圖片進行排序,我該怎么做?

[英]I need to write a Python script to sort pictures, how would I do this?

我要尋找的是一個可以瀏覽大量圖片並將其分類到文件夾中的腳本。

因此,我在展覽會上為狗拍照,可以說我為dog1拍了幾張照片,該狗的照片會自動以序列號格式命名(Dog1-1,Dog1-2,Dog1-3等)。 Dog2將采用相同的格式。

我想要一個腳本,可以將Dog1-1-10移入名為Dog 1的文件夾中。Dog2-1-10移至名為Dog 2的文件夾中,依此類推。

如何在Python中完成?

因此,基本上,您想做的是:

  1. 查找給定文件夾中的每個文件
  2. 取每個文件名的第一部分,並將其用作文件夾名稱
  3. 如果該文件夾不存在,請創建它
  4. 將文件移到該文件夾
  5. 重復

好吧,好漂亮! 弄清楚我們想要做的事是成功的一半-現在,這主要是谷歌搜索並將其轉換為代碼的問題。

首先,我們需要文件夾來簽入:

folder_path = "myfolder"

現在,我們要查找該文件夾中的每個文件。 一個快速的谷歌搜索會話結果如下

import os
import os.path

images = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

os.path.join一句,我將相當多地使用os.path.join ,因此您可能想簡要閱讀一下它的作用。 您在評論中鏈接的指南對此進行了很好的介紹。

現在,我們想要每個名稱的第一部分。 我假設我們會將第一個破折號之前的所有內容都視為文件夾名稱,而忽略其余的名稱。 一種實現方法是使用string.split ,它通過給定字符將字符串拆分為字符串列表,並獲取第一個元素:

for image in images:
    folder_name = image.split('-')[0]

現在,如果該文件夾尚不存在,我們要創建它。 再次, google是我們的朋友

new_path = os.path.join(folder_path, folder_name)
if not os.path.exists(new_path):
    os.makedirs(new_path)

最后,我們移動原始圖像

import shutil

old_image_path = os.path.join(folder_path, image)
new_image_path = os.path.join(new_path, image)
shutil.move(old_image_path, new_image_path)

放在一起:

import os
import os.path
import shutil

folder_path = "test"

images = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

for image in images:
    folder_name = image.split('-')[0]

    new_path = os.path.join(folder_path, folder_name)
    if not os.path.exists(new_path):
        os.makedirs(new_path)

    old_image_path = os.path.join(folder_path, image)
    new_image_path = os.path.join(new_path, image)
    shutil.move(old_image_path, new_image_path)

暫無
暫無

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

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