2017-06-17 2 views
1

Ich habe es mit einem Skript, das nicht funktioniert.Kann einen Python-Fehler nicht verstehen

Zuerst i transkribieren den Fehler:

File "/home/path", line nº, in out_to_mop_let #~this is the function 
    for lindex in range(lstart+ 4,lfinish): 
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int' 

Das Skript ist derjenige unten, wo i ** Symbole um das offensichtliche Problem gestellt haben:

def out_to_mop_let (namefilein, namefileout, keywords=""): 
    print namefilein 
    filein=open(namefilein, "r") 
    fileout=open(namefileout, "w") 
    lines = filein.readlines() 
    filein.close() 

lstart = None 
lfinish = None 

for lindex in range(0,len(lines)): 
    if lindex-4>lstart and lines[lindex]=='\n' and lfinish==None and lstart!=None: 
     lfinish=lindex+1 
    if "CURRENT VALUE OF HEAT OF FORMATION" in lines[lindex]: 
     lstart=lindex 
print lstart 
print lfinish 
fileout.write(keywords + "\n\n\n") 
**for lindex in range(lstart+ 4,lfinish): 
    fileout.write(lines[lindex])** 

fileout.close() 
filein.close() 

Gibt es etwas falsch?

+0

Sie initialisieren 'lstart' mit' None'. Wenn "CURRENT VALUE OF HEAT OF FORMATION" nicht in "lines [lindex]" steht, ändert sich der Wert nicht. – Matthias

+0

Wenn 'len (lines) == 0', dann gehst du nie in deine Schleife und änderst' Lstart' niemals von 'None' –

+0

Sieht so aus als ob" lstart "immer noch' None' ist, wenn es zur 'for loop' und es versucht, den '+' Operator zu 'None' Typ und' int' – CiaranWelsh

Antwort

0

Es scheint einige mögliche Probleme mit diesem Skript zu geben.

  1. An der Stelle des Fehlers Sie beschreiben, scheint es, dass lstart noch auf den Wert Nicht zugeordnet ist und kann daher nicht auf den Wert 4.
  2. Wie bereits erwähnt in den Kommentaren hinzugefügt werden, die Funktion out_to_mop_let() wird nicht aufgerufen, daher werden einigen der Variablen, nämlich Zeilen, keine Werte zugewiesen.
  3. Die Zeilenvariable ist wichtig für Ihr Skript ... Ihre beiden if-Anweisungen sind abhängig von den Zeilen, um Entscheidungen zu treffen.
Verwandte Themen