[python]os库与shutil库与操作系统的交互-整理硬盘中Vivaldi的作品
Vivaldi是本人最喜爱的作曲家,他结构完整,旋律优美的协奏曲真是令人着迷。
关于os库的使用 http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html
关于shutil库的使用http://www.cnblogs.com/xiaowuyi/archive/2012/03/08/2385808.html
1.分析
在网易云上下载到的Vivaldi作品,命名大概是这样
Anne-Sophie Mutter - Antonio Vivaldi: The Four Seasons, Concerto No. 1 in E ("Spring") RV 269 (Op. 8 No. 1): 2. Largo e pianissimo sempre
或者是
Christophe Coin - RV 403 Concerto D-dur (2)
再或者
Claudio Scimone,维瓦尔第 - Flute Concerto in F Major, Op. 10, No. 1RV 433 "La tempesta di mare": III. Presto
因为是来自不同的专辑,所以命名包含的信息也不尽相同.想要实现绝对全面的分类整理难度真的是很大..但是95%的Vivaldi作品名中都会有RV编号,据这个index来分类还是可以实现的。
所以为了实现最简单的整理,要做的就是
- 建立名为”RVXXX“的文件夹
- 将带标号的作品移入相应文件夹
- 在一个文本文档中记录该作品的收藏状态
实现起来没什么难度,处理字符串时注意一下就好了
2.编码与调试
#-*- coding:utf-8 –*- import os import shutil #os.mkdir("Test") os.chdir("../Vivaldi") fp = open("Flag.csv","w") RV_Flag=[] for i in range(0,999): RV_Flag.append(0) List=os.listdir(os.getcwd()) for k in List: if(k.find("RV")==-1): pass else: if os.path.isdir("./"+k): pass else: print k m=k[k.find("RV")+2:k.find("RV")+7] rvnum="" for l in m: if l.isdigit(): rvnum+=l index=int(rvnum) if os.path.exists("./RV"+str(rvnum)): shutil.move(r""+k,r"./RV"+str(rvnum)) else: os.mkdir("RV"+str(rvnum)) shutil.move(r""+k,r"./RV"+str(rvnum)) RV_Flag[index]=1 for k in range(0,999): if RV_Flag[k]==1: fp.write("RV."+str(k)+",Done\n") else: fp.write("RV."+str(k)+",待收藏\n")
+
达到预想中的效果了
3.后记
整理音乐这种工作,就编程层面来讲可能并无太高的技术含量。我只是随便写写,练练手,找找对Python的感觉。
但是如何合理的分类,组织,展现音乐数据依然是一件值得思考的事情。
希望能在未来结合数据库技术完成一个比较完善的音乐管理系统。