-2

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

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

我喜欢成千上万个这样的文件。我们可以为每组文件创建文件夹,例如a-b Can I grep it?我该怎么做?

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

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

4

3 回答 3

1

列出所有带有glob.glob('*.png').

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

使用os.mkdir(path).

使用os.rename(src, dst).

于 2013-02-26T20:23:35.490 回答
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".
于 2013-02-26T20:54:27.173 回答
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

一些蟒蛇

#!/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
于 2013-02-26T21:45:18.773 回答