首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要编写一个Python脚本来对图片进行排序,我将如何做到这一点?

我需要编写一个Python脚本来对图片进行排序,我将如何做到这一点?
EN

Stack Overflow用户
提问于 2014-04-20 03:16:40
回答 1查看 10.2K关注 0票数 3

我要找的是一个脚本,它可以通过一个巨大的图片列表并将它们排序到文件夹中。

所以我在展览上给狗拍照,比如说我拍了几张dog1的照片,这张狗的图片自动以序列号格式命名(狗1-1,狗1-2,狗1-3,等等)。Dog2将遵循相同的格式。

我想要一个脚本,它可以将狗1-1-10移动到一个名为Dog 1的文件夹中,Dog2-1-10移动到一个名为Dog 2的文件夹,等等。

如何在Python中做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2014-04-20 04:18:07

基本上,你想做的是:

  1. 查找给定文件夹中的每个文件
  2. 取每个文件名的第一部分并将其用作文件夹名。
  3. 如果文件夹不存在,创建它
  4. 将文件移动到该文件夹中。
  5. 重复

好吧,漂亮!找出我们想要做的事情是战斗的一半--现在,这主要是谷歌搜索并将其转化为代码的问题。

首先,我们需要该文件夹签入:

代码语言:javascript
复制
folder_path = "myfolder"

现在,我们要找到文件夹中的每一个文件。一个快速的googling会话显示this

代码语言:javascript
复制
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,所以您可能想简单地阅读一下它的功能。您在评论中链接到的指南很好地涵盖了它。

现在,我们要每个名字的第一部分。我将假设,我们将把第一个破折号上的所有东西作为文件夹名来处理,而忽略其余的。这样做的一种方法是使用string.split,它将一个字符串按照给定的字符拆分成一个字符串列表,并获取第一个元素:

代码语言:javascript
复制
for image in images:
    folder_name = image.split('-')[0]

现在,如果该文件夹不存在,我们希望创建它。再说一遍,google is our friend

代码语言:javascript
复制
new_path = os.path.join(folder_path, folder_name)
if not os.path.exists(new_path):
    os.makedirs(new_path)

最后,我们move the original image

代码语言:javascript
复制
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)

把这一切结合在一起:

代码语言:javascript
复制
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)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23178039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档