Python实践:分类归档--按扩展名移动文件到子文件夹


[color="#008080"]#        sortAndMoveArchive.py
[color="#008080"]#        encoding:gb2312
[color="#008080"]#        在电骡下载目录程序分类中,将所有文件(不包含子文件夹及其中)按扩展名分别移动到
[color="#008080"]#        形如'archive_'+sEx的文件夹中
[color="#008080"]#        如果没有则先建立
[color="#0000ff"]import [color="#800000"]os
[color="#000000"]sFrom[color="#00c600"]=[color="#ff00ff"]'E:\eMule\Incoming\程序_'
[color="#800000"]os[color="#00c600"].[color="#808000"]chdir[color="#000000"](sFrom)     [color="#008080"]#   定位工作目录
[color="#0000ff"]def [color="#000000"]quotePath(sPath):   [color="#008080"]#  引号路径,考虑到包含空格的情况
    [color="#0000ff"]return [color="#ff00ff"]'"'[color="#00c600"]+[color="#000000"]sPath[color="#00c600"]+[color="#ff00ff"]'"'
[color="#0000ff"]for [color="#808000"]f [color="#0000ff"]in [color="#800000"]os[color="#00c600"].[color="#808000"]listdir[color="#000000"](sFrom):
    [color="#0000ff"]if [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]isfile[color="#000000"]([color="#808000"]f[color="#000000"]):   [color="#008080"]#   只对文件操作
        [color="#000000"]sEx[color="#00c600"]=[color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]splitext[color="#000000"]([color="#808000"]f[color="#000000"])[1][1:] [color="#008080"]#  取出扩展名
        [color="#0000ff"]if [color="#808000"]len[color="#000000"](sEx)[color="#00c600"]>[color="#000000"]1:  [color="#008080"]#   有扩展名
            [color="#008080"]#   检查归档目录并确保其存在
            [color="#000000"]sArcPath[color="#00c600"]=[color="#ff00ff"]'archive_'[color="#00c600"]+[color="#000000"]sEx
            [color="#0000ff"]if [color="#000000"](([color="#0000ff"]not [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]exists[color="#000000"](sArcPath)) [color="#0000ff"]or [color="#000000"]([color="#0000ff"]not [color="#800000"]os[color="#00c600"].[color="#000000"]path[color="#00c600"].[color="#808000"]isdir[color="#000000"](sArcPath))):
                [color="#008080"]#   如果存在还建则会WindowsError: [Error 17] : 'archive_rar'
                [color="#008080"]#   移动到对应文件夹
                [color="#800000"]os[color="#00c600"].[color="#808000"]mkdir[color="#000000"](sArcPath)
            [color="#008080"]#   准备并执行Shell移动命令
            [color="#000000"]sCmd[color="#00c600"]=[color="#ff00ff"]' '[color="#00c600"].[color="#808000"]join[color="#000000"]([[color="#ff00ff"]'move'[color="#000000"],quotePath([color="#808000"]f[color="#000000"]),quotePath(sArcPath[color="#00c600"]+[color="#800000"]os[color="#00c600"].[color="#000000"]sep)])
            [color="#0000ff"]print [color="#000000"]sCmd
            [color="#0000ff"]if [color="#800000"]os[color="#00c600"].[color="#808000"]system[color="#000000"](sCmd)[color="#00c600"]==[color="#000000"]0:
               [color="#0000ff"]print [color="#ff00ff"]'successful'