从文件制作文件夹

时间:2013-02-26 20:16:22

标签: python linux shell

这就是我的文件的样子..

   a-b-2013-02-12-16-38-54-a.png
   a-b-2013-02-12-16-38-54-b.png

我喜欢这样的数千个文件。 我们可以为每组文件制作文件夹,例如a-b 我可以吃吗?我怎么能这样做?

import glob, itertools, os
import re
foo = glob.glob('*.png')

for a in range(len(foo)):
        print foo[a]
        match=re.match("[a-zA-Z0-9] - [a-zA-Z0-9] - *",foo[a])
        print "match",match

那么,那里的错误是什么?

3 个答案:

答案 0 :(得分:1)

列出包含glob.glob('*.png')

的所有文件

然后,您可以使用正则表达式(import re)解析每个文件名。

使用os.mkdir(path)制作目录。

使用os.rename(src, dst)移动文件。

答案 1 :(得分:0)

此代码适用于您想要执行的操作:

import os

path="./"
my_list = os.listdir(path)   #lists all the files & folders in the path ./ (i.e. the current path)

for my_file in my_list:
    if ".png" in my_file:
        its_folder="something..."
        if not os.path.isdir(its_folder):
            os.mkdir(its_folder)     #creates a new folder
        os.rename('./'+my_file, './'+its_folder+'/'+my_file)    #moves a file to the folder some_folder.

您必须为要创建的每个文件夹指定名称,并将文件移入(而不是“某些东西......”),例如:

its_folder=my_file[0:3];    #if my_file is "a-b-2013-02-12-16-38-54-a.png" the corresponding folder would have its first 3 characters: "a-b".

答案 2 :(得分:0)

让你盯着看,适应自己需要的东西:

让我们创建一些文件:

$ touch a-b-2013-02-12-16-38-54-{a..f}.png


$ ls
a-b-2013-02-12-16-38-54-a.png  a-b-2013-02-12-16-38-54-c.png  a-b-2013-02-12-16-38-54-e.png  f.py
a-b-2013-02-12-16-38-54-b.png  a-b-2013-02-12-16-38-54-d.png  a-b-2013-02-12-16-38-54-f.png

一些python

#!/usr/bin/env python

import glob, os

files = glob.glob('*.png')

for f in files:
    # get the character before the dot
    d = f.split('-')[-1][0]
    #create directory
    try:
        os.mkdir(d)
    except OSError as e:
        print 'unable to creade dir', d, e
    #move file
    try:
        os.rename(f, os.path.join(d, f))
    except OSError as e:
        print 'unable to move file', f, e

让我们运行它

$ ./f.py

$ ls -R
.:
a  b  c  d  e  f  f.py

./a:
a-b-2013-02-12-16-38-54-a.png

./b:
a-b-2013-02-12-16-38-54-b.png

./c:
a-b-2013-02-12-16-38-54-c.png

./d:
a-b-2013-02-12-16-38-54-d.png

./e:
a-b-2013-02-12-16-38-54-e.png

./f:
a-b-2013-02-12-16-38-54-f.png