2014-04-20 45 views
1

我正在寻找的是一个脚本,可以通过一个巨大的图片列表并将它们分类到文件夹中。我需要编写一个Python脚本来排序图片,我该怎么做?

因此,我在展会上为狗拍照,因此可以说我拍了几张dog1照片,这张狗照片是以序列号格式(Dog1-1,Dog1-2,Dog1-3等)自动命名的。 Dog2将遵循相同的格式。

我想一个脚本,可以采取Dog1-1-10并将其移动到一个名为狗1 Dog2-1-10到一个名为狗2文件夹文件夹等

这怎么可能在Python中完成?

+2

什么都__you__试过吗? – sshashank124

+0

我试过按照本指南 [自动化常见任务](http://www.pythonlearn.com/html-007/cfbook016.html) 我根本没有Python经验,所以任何指南或链接导游将是非常有益的。 – user3553113

回答

4

所以基本上,你想要做的是:

  1. 找到每一个文件给定文件夹
  2. 以每个文件名的第一部分,并使用该文件夹名称
  3. 如果文件夹不存在,创建它
  4. 将文件移动到该文件夹​​
  5. 重复

呃,漂亮!弄清楚我们想要做的是战斗的一半 - 现在,这主要是一个谷歌搜索并将其转化为代码的问题。

首先,我们需要的文件夹办理入住手续:

folder_path = "myfolder" 

现在,我们要找出该文件夹内的所有文件。快速谷歌搜索会轮番上涨this

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,其将通过给定的字符字符串转换成字符串列表,并抓住第一个元素:

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

现在,如果该文件夹不存在,我们希望创造它。再次,google is our friend

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

最后,我们move the original image

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) 
相关问题