●应用场景
文件夹下音乐很,现在想根据歌名中的作者进行分类到不同的文件夹之下。
分类之后再基于分类的资源结构构件后期的web服务。
其中分类的工作交给python脚本进行完成。
待分类音乐文件如:
周杰伦 - 枫.mp3
周杰伦-枫.mp3
周杰伦_枫.mp3
...
●分类的脚本classdir.py
import os,sys
import shutil,string
from string import Template
import re
###############################################################################
gCount = 0
###############################################################################
def getList(dirname,pFunc):
global gCount
try:
ls=os.listdir(dirname)
except:
print dirname,'is access deny'
else:
for file in ls:
temp = os.path.join(dirname,file)
if os.path.isdir(temp):
continue
else:
pFunc(dirname,file)
###############################################################################
def create_dir_ifneed(author):
ls=os.listdir(os.getcwd())
if author in ls:
return
os.mkdir(author)
def rename_file(old,new):
dirname = os.getcwd()
os.rename(os.path.join(dirname,old),os.path.join(dirname,new))
def move_file_to_dir(file,dir):
dirname = os.getcwd()
shutil.move(os.path.join(dirname,file),os.path.join(dirname,dir))
def process(dirname,file):
if file == "." or file == "..":
return
print file
if not re.search("mp3$",file):
return
if re.search("-",file):
items = file.split("-",1)
author = items[0].strip()
fname = items[1].strip()
create_dir_ifneed(author)
rename_file(file,fname)
move_file_to_dir(fname,author)
if re.search("_",file):
items = file.split("_",1)
author = items[0].strip()
fname = items[1].strip()
create_dir_ifneed(author)
rename_file(file,fname)
move_file_to_dir(fname,author)
###############################################################################
print "processing the following files"
print "====================================================="
getList(os.getcwd(),process)