为什么Python文件夹排序脚本给我错误而不工作?

时间:2015-09-13 19:36:03

标签: python sorting terminal runtime-error

所以我尝试过使用shutil.copy和os.remove,并且在运行时我一直收到错误。有什么建议?我试图让它通过一个文件夹" Downloads"并按类型将所有文件排序到单独的文件夹中。

#!/bin/python

import os, shutil

path = raw_input("Enter your folder you would like sorted: ")

def searchFolder(path):

    if os.path.exists(path):
        dirList = os.listdir(path)

        for filename in dirList:
            if  filename.endswith(".jpg") or filename.endswith(".raw") or filename.endswith(".dng") or filename.endswith(".psd"):
                if not os.path.exists(path + "Photos"):
                    os.makedirs(path + "Photos")
                os.rename(path + filename, path + "Photos/" + filename)
            elif ".docx" in filename or ".doc" in filename:
                if not os.path.exists(path + "Word Docs"):
                    os.makedirs(path + "Word Docs")
                os.renames(path + filename, path + "Word Docs/" + filename)
            elif ".pptx" in filename:
                if not os.path.exists(path + "Powerpoints"):
                    os.makedirs(path + "Powerpoints")
                os.renames(path + filename, path + "Powerpoints/" + filename)
            elif ".zip" in filename:
                if not os.path.exists(path + "Zip Files"):
                    os.makedirs(path + "Zip Files")
                os.renames(path + filename, path + "Zip Files/" + filename)
            elif ".dmg" in filename:
                if not os.path.exists(path + "Disk Images"):
                    os.makedirs(path + "Disk Images")
                os.renames(path + filename, path + "Disk Images/" + filename)
            elif ".mp3" in filename:
                if not os.path.exists(path + "Music"):
                    os.makedirs(path + "Music")
                os.renames(path + filename, path + "Music/" + filename)
            elif ".pdf" in filename:
                if not os.path.exists(path + "Pdf"):
                    os.makedirs(path + "Pdf")
                os.renames(path + filename, path + "Pdf/" + filename)
            elif ".cpp" in filename:
                if not os.path.exists(path + "C++"):
                    os.makedirs(path + "C++")
                os.renames(path + filename, path + "C++/" + filename)
            elif ".psd" in filename:
                if not os.path.exists(path + "Photoshop"):
                    os.makedirs(path + "Photoshop")
                os.renames(path + filename, path + "Photoshop/" + filename)
            elif ".dng" in filename:
                if not os.path.exists(path + "Photos/Raw Photos"):
                    os.makedirs(path + "Photos/Raw Photos")
                os.rename(path + filename, path + "Photos/Raw Photos/" + filename)
            elif not "." in filename:
                if not os.path.exists(path + "Folders"):
                    os.makedirs(path + "Folders")
                os.renames(path + filename, path + "Folders/" + filename)
            else:
                if not os.path.exists(path + "Other"):
                    os.makedirs(path + "Other")
                os.rename(path + filename, path + "Other/" + filename)

        print "Sorting Complete"
    else:
        print "Folder Does not exist"

searchFolder(path)

1 个答案:

答案 0 :(得分:0)

第7~9行可能来自其他一些卡通片。 : - )

这是你的代码pythonified,你可能会更容易发现错误。

import os
def searchFolder(path):
    for filename in os.listdir(path):
        for ext, category in {('.jpg', '.raw'): 'Photos',
                              ('.doc', '.docx'): 'Word Docs',
                              '.pptx': 'Powerpoints',
                              '.zip': 'Zip Files',
                              '.dmg': 'Disk Images',
                              '.mp3': 'Music',
                              '.pdf': 'Pdf',
                              '.cpp': 'C++',
                              '.psd': 'Photoshop',
                              '.dng': 'Photos/Raw Photos'}.items():
            if filename.endswith(ext): break
        else: category = 'Other' if '.' in filename else 'Folders'
        os.renames(path + filename, path + category + '/' + filename)
searchFolder(input("Enter your folder you would like sorted: "))