缩进错误:意外错误

0 投票
4 回答
3126 浏览
提问于 2025-04-16 20:39

我刚开始学习Python,之前在notepad++里写了一段代码。我用空格代替了制表符,并且我觉得我的缩进格式是正确的。但是我还是遇到了错误。我不明白我哪里做错了。以下是我的代码:

#!/usr/bin/python

import sys
import shutil
import sys

def Usage() :
  print "LabelFile TranscriptionFile PhonemeFile"

def main(argv = None) :
  if len(sys.argv) !=3 :
    Usage()
  else :
    LabelFile = sys.argv[1]
    TranscriptionFile = sys.argv[2]
    PhonemeFile = sys.argv[3]
    if (os.path.exists(LabelFile)) :
      InFile = open(LabelFile, "r")
      TFile = open(TranscriptionFile, "w")
      PFile = open(PhonemeFile, "w")
        for line in iter(InFile) :
          list = line.split()
          Tlist = list.pop(3) 
          Plist = list[2]
          TFile.write(" ".join(list) + "\n") 
          PFile.write("".join(list) + " ")  
        InFile.close()
        TFile.close()
        PFile.close()

if __name__ == "__main__" :
  sys.exit(main()) 

请帮帮我。非常感谢。

4 个回答

1

首先,虽然这不是硬性规定,但通常情况下,缩进时使用四个空格比较常见,而不是两个空格(当然,如果你是在修改一些已经用两个空格缩进的代码,那就另当别论了)

接下来,你修改后的代码(在第21行的for循环中有一个缩进错误):

#!/usr/bin/python

import sys
import shutil
import sys

def Usage() :
  print "LabelFile TranscriptionFile PhonemeFile"

def main(argv = None) :
  if len(sys.argv) !=3 :
    Usage()
  else :
    LabelFile = sys.argv[1]
    TranscriptionFile = sys.argv[2]
    PhonemeFile = sys.argv[3]
    if (os.path.exists(LabelFile)) :
      InFile = open(LabelFile, "r")
      TFile = open(TranscriptionFile, "w")
      PFile = open(PhonemeFile, "w")
      for line in iter(InFile) :
        list = line.split()
        Tlist = list.pop(3)
        Plist = list[2]
        TFile.write(" ".join(list) + "\n")
        PFile.write("".join(list) + " ")
      InFile.close()
      TFile.close()
      PFile.close()

if __name__ == "__main__" :
  sys.exit(main())
1

第21行:

for line in iter(InFile) :

开始让它和上面的行对齐

错误提示也会告诉你出错的行号,所以如果你仔细看这些提示,修复错误会变得很简单

而且,养成缩进4个空格而不是2个空格的好习惯也是很重要的:

#!/usr/bin/python

import sys
import shutil
import sys

def Usage() :
    print "LabelFile TranscriptionFile PhonemeFile"

def main(argv = None) :
    if len(sys.argv) !=3 :
        Usage()
    else :
        LabelFile = sys.argv[1]
        TranscriptionFile = sys.argv[2]
        PhonemeFile = sys.argv[3]
        if (os.path.exists(LabelFile)) :
            InFile = open(LabelFile, "r")
            TFile = open(TranscriptionFile, "w")
            PFile = open(PhonemeFile, "w")
            for line in iter(InFile) :
                list = line.split()
                Tlist = list.pop(3) 
                Plist = list[2]
                TFile.write(" ".join(list) + "\n") 
                PFile.write("".join(list) + " ")  
            InFile.close()
            TFile.close()
            PFile.close()

if __name__ == "__main__" :
  sys.exit(main()) 
3

在这行代码前面有多余的缩进。

for line in iter(InFile) :

把这一行和接下来的八行的缩进减少一下,就可以了。

撰写回答