为什么意外缩进?

时间:2009-12-31 00:57:09

标签: python indentation

为什么会这样?

def LoadPackageList():
    try:
        #Attempts to load package list... Adds each neccessary attribute into array
        print("Loading Package List... please wait")
        packages = []
        packagelisturl = os.getcwd() + "packages.list"
        dom = minidom.parse(urllib.urlopen(packagelisturl))
        try:
            for eachattributeofpkglist in dom.GetElementsByTagNameNS(packagelist, 'packages'):
                packages.append({
                    'title': node.getAttribute('title'),
                    'shortname': node.getAttribute('shortname'),
                    'dlurl': node.getAttributes('dlurl'),
                    'description': node.getAttributes('description'),
                    'tags': node.getAttributes('tags'),
                    'infopage': node.getAttributes('infopage'),
                    'quality': node.getAttributes('quality'),
                    'id': node.getAttributes('id')
            })

        except LoadPackageListFailed:
            print("Loading Package List failed... try again soon or manually update this release!")
            Write2ErrorLog(LoadPackageListFailed)
#Indent Here Fails            
def Usage():
#prints usage and closes
    print ("Invalid Argument Specified, please retry using the format stated below\n")
    print ("*** Simtho Usage Parameters ***\n")
    print ("-i Installs Local App, include full path")
    print ("-u Uninstalls Installed App,include ID or Name")
    print ("-l Lists all installed Apps and their ID")
    print ("-a Lists All Apps in Repository")
    print ("-s Downloads and Installs App from repository, enter the title or id number")
    print ("-w Downloads and Installs Single App from a full link")
    print ("-r Removes All Packages installed\n")
    print ("*** End of Simtho Usage ***")
    os._exit(1)
    return;

3 个答案:

答案 0 :(得分:7)

尝试通过python -t运行它,看看那里是否有混合的标签和空格。

作为旁注:使用optparse来处理命令行参数。它将使您的生活更轻松,并产生一个很好的一致界面。

答案 1 :(得分:4)

您发布的代码工作得很好。因此,请检查您发布的部件正上方的线条。如果这没有帮助,请发布确切的错误消息和更多的代码。

修改:同时检查您是否没有标签和空格的混合。

编辑2:(响应OP发布的更多代码)。 啊哈。每个try都需要一个except。在LoadPackageList的定义中,有两个try。内部有一个except块,但外层只有一个try

答案 2 :(得分:3)

第2行的尝试是否应该有一个除外,最后或者与之相关联?或者这是我以前从未见过的一些新的Python成语?