[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的感觉。

但是如何合理的分类,组织,展现音乐数据依然是一件值得思考的事情。

希望能在未来结合数据库技术完成一个比较完善的音乐管理系统。

 

posted @ 2016-11-05 16:29  CN_LHC  阅读(354)  评论(0编辑  收藏  举报