2011-07-01 4 views
-1

Je suis novice en Python et j'ai écrit un code dans notepad ++. J'ai utilisé des espaces au lieu de tabulation et je suppose que j'ai utilisé le format d'indentation correct. Mais j'ai toujours cette erreur. Je ne comprends pas ce que je fais mal. Voici le code,Erreur d'indentation: erreur inattendue

#!/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()) 

Aidez-nous s'il vous plaît. Merci beaucoup.

Répondre

3

Il y a un i ndentation trop devant

for line in iter(InFile) : 

Réduire l'empreinte pour cette ligne et les huit lignes suivantes, et vous devriez être tous ensemble.

+0

Il affiche l'erreur sur la ligne 15 qui est TranscriptionFile = sys.argv [2] – zingy

+0

@Shivani Êtes-vous sûr à 100% que vous n'utilisez pas d'onglets au lieu d'espaces sur cette ligne? – knatten

+0

J'utilise des espaces et je me suis débarrassé de l'erreur d'indentation. Merci – zingy

1

ligne 21:

for line in iter(InFile) : 

départ en l'alignant avec la ligne ci-dessus

tracebacks aussi vous dire le numéro de la ligne d'erreur il est donc assez facile de fixer si vous lisez « em all

De plus, il est une bonne habitude de mettre en retrait 4 espaces et non 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()) 
1

Tout d'abord. Bien que ce n'est pas une exigence, il est courant à l'aide quatre espaces indenter, pas deux (à moins, bien sûr, vous étendez un code qui a déjà 2 indentations espaces)

Ensuite, votre code modifié (il y avait un retrait erreur dans la boucle for sur la ligne 21):

#!/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

Avec bloc-notes ++, dans le panneau « paramètres/préférences » Menu «composants Editer », il existe une option de taille de tabulation, utilisez 4, et une case à cocher « remplacer par espace "Cochez-le et vous éviterez de mélanger les onglets et les espaces.