2013-02-26 103 views
-2

使這是我的文件看起來怎麼樣..文件夾從文件

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 

那麼,那裏有什麼錯誤?

+0

當然可以。執行適當的字符串操作並調用由Python包裝的'mkdir'系統調用。 – 2013-02-26 20:17:37

+0

你能指點我一個例子嗎? – pistal 2013-02-26 20:18:47

+1

http://docs.python.org/3/library/os.html?highlight=mkdir#os.mkdir&http://docs.python.org/3/library/string.html?highlight=string#string – 2013-02-26 20:21:42

回答

1

列出所有帶有glob.glob('*.png')的文件。

然後,您可以使用正則表達式分析每個文件名(import re)。

使用os.mkdir(path)製作展架。

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

+0

你可以看看我現在發佈的代碼嗎? – pistal 2013-02-26 21:17:58

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". 
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