【问题标题】:Python error when running script - "IndentationError: unindent does not match any outer indentation"运行脚本时出现 Python 错误 - “IndentationError: unindent 不匹配任何外部缩进”
【发布时间】:2009-07-14 11:33:13
【问题描述】:

我在尝试运行脚本时遇到错误

Error:"IndentationError: unindent does not match any outer indentation"

引发错误的代码片段:

def update():
    try:
        lines = open("vbvuln.txt", "r").readlines()
    except(IOError): 
         print "[-] Error: Check your phpvuln.txt path and permissions"
         print "[-] Update Failed\n" 
        sys.exit(1)
    try:

这是发生错误的实际行:

print "[-] Update Failed\n" 

【问题讨论】:

  • 您应该使用代码按钮发布带有正确换行符和缩进的问题。否则很难确定你的缩进是否有问题。
  • -1 先问后想。

标签: python syntax indentation


【解决方案1】:

sys.exit(1) 之前放置一个空格或在print "[-] Error: Check your phpvuln.txt path and permissions"print "[-] Update Failed\n" 之前删除空格。

【讨论】:

    【解决方案2】:

    正如其他人所提到的,您需要确保每个代码块具有完全相同的缩进。

    他们没有提到的是widely adopted convention 每个缩进总是使用 4 个空格。在您的代码中,print 语句使用 5 个空格缩进(很可能是偶然的)。所以不要在sys.exit(1) 中添加另一个空格;删除 print 语句中的空格。

    修改后的代码:

    def update():
        try:
            lines = open("vbvuln.txt", "r").readlines()
        except (IOError): 
            print "[-] Error: Check your phpvuln.txt path and permissions"
            print "[-] Update Failed\n" 
            sys.exit(1)
    

    【讨论】:

    • 虽然我也是 PEP8 的追随者,但我不会说 Python 中的 4 个空格是一种标准,而是一种约定。只要您保持一致,使用或多或少的空格都不会破坏 Python。
    • 你说得对,我改变了措辞。不过,我仍然会给不使用 4 个空格进行缩进的开发人员恶眼... =)
    • 4 以外的任何东西都违背了禅意。
    【解决方案3】:

    保持缩进标准的一个好方法是使用制表键而不是空格键。

    【讨论】:

      【解决方案4】:

      你有一个空的 try 块,下面什么都没有。这是导致错误的原因。

      顺便说一句,您的 sys.exit(1) 也没有缩进。在 python 中,缩进很重要,因为这是 Python 解释器确定代码块的方式。因此,您必须正确缩进代码才能运行代码。

      【讨论】:

      • 最后一个try 块很可能不是空的,他只是停止在那里复制他的代码。如果它为空,则错误将是“预期为缩进块”。如果没有 except 块,它无论如何都不会工作(“无效语法”)
      【解决方案5】:

      缩进错误发生在您缩进不正确的地方。从“sys”开头的行中有不同的缩进这一事实可以清楚地看到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 2010-10-04
        相关资源
        最近更新 更多