-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

あなたを凝視させ、あなた自身のニーズに適応させる何か:

いくつかのファイルを作成しましょう:

$ 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 に答える
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 に答える