Skip to content

Instantly share code, notes, and snippets.

@singlepig
Created April 17, 2014 07:50
Show Gist options
  • Select an option

  • Save singlepig/10962162 to your computer and use it in GitHub Desktop.

Select an option

Save singlepig/10962162 to your computer and use it in GitHub Desktop.

Revisions

  1. singlepig created this gist Apr 17, 2014.
    62 changes: 62 additions & 0 deletions classify.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    #!/usr/bin/env python
    # encoding: utf-8

    '''
    按文件名前缀分类文件。
    一个目录下有很多形如2012-08-23 18.20.41.jpg的文件,要将这些文件进行分类,对于2012-08-23 18.20.41.jpg文件,
    生成文件夹2012-08 ,将其放到文件夹内。
    '''

    import sys
    import os


    def creatDir(names):
    '''
    根据目录下的文件名创建所需要的文件夹,已经存在的文件夹跳过。
    '''
    dirList = []
    for name in names:
    if os.path.isdir(name):
    print ("%s is a dir." % (name) )
    continue
    dirList.append(name[0:7])

    dirList = list(set(dirList))
    print ( "将要创建的文件夹为:%s" % dirList)
    print ( "将在 %s 下创建。" % absTargetPath )
    os.chdir(absTargetPath)
    for path in dirList:
    if os.path.exists(path):
    print ( "文件夹 %s 已经存在!" % path )
    else:
    os.makedirs(path)
    print ( "创建文件夹 %s 成功!" % path)

    def classify(names):
    '''
    将文件放到对应的文件夹中
    '''
    for n in xrange(len(nameList)):
    old = os.path.join(absTargetPath, nameList[n])
    new = os.path.join(absTargetPath, nameList[n][0:7])
    '''
    移动文件
    '''
    os.rename(old, new + '/' + nameList[n])
    print ("文件 %s 移动到 %s 中,done!" % (nameList[n], new))



    if __name__ == '__main__':
    docPath = sys.argv[1]
    print '需要进行分类的目标目录绝对路径为:'
    absTargetPath = os.path.abspath(docPath)
    print absTargetPath
    nameList = []
    for name in os.listdir(absTargetPath):
    if os.path.isfile(absTargetPath + '/' + name):
    nameList.append(name)
    print ("包含文件 %s 个。" % len(nameList))
    creatDir(nameList)
    classify(nameList)