2017-02-25 4 views
-2

Arbeiten an einem Kopf Python Buch, 2010, habe ich eine Übung, wo ich eine Liste in eine bestimmte Datei und eine andere Liste in eine andere Datei drucken musste. Hat der ganze Code, alles funktioniert, bis auf das Print-Modul, das den Namen der Datei nicht definiert, was ziemlich seltsam ist, da die Lösung der Übung es ist genau der gleiche Code von mir.Python-Druckmodul sagt der Dateiname ist nicht definiert

import os 

man = [] 
other = [] 

try: 

    data = open('ketchup.txt') 

    for each_line in data: 
     try: 
      (role, line_spoken) = each_line.split(":", 1) 
      line_spoken = line_spoken.strip() 
      if role == 'Man': 
       man.append(line_spoken) 
      elif role == 'Other Man': 
       other.append(line_spoken) 
     except ValueError: 
      pass 
    data.close() 
except IOError: 
    print("The data file is missing!") 
print(man) 
print(other) 

try: 
    out = open("man_speech.txt", "w") 
    out = open("other_speech.txt", "w") 
    print(man, file=man_speech)   #HERE COMES THE ERROR 
    print(other, file=other_speech) 

    man_speech.close() 
    other_speech.close() 
except IOError: 
    print("File error") 

Hier ist der Fehler aus dem IDLE:

Traceback (most recent call last): File "C:\Users\Monok\Desktop\HeadFirstPython\chapter3\sketch2.py", line 34, in print(man, file=man_speech) NameError: name 'man_speech' is not defined

Bin ich etwas falsch über die Syntax zu tun, oder vielleicht habe ich nicht bekommen, wie das Druckmodul funktioniert? Das Buch gibt mir keine Ahnung davon. Ich habe auch viele Fragen hier und in einigen anderen Foren überprüft, aber mit meinem Code scheint nichts falsch zu sein, und ich bin tatsächlich geneigt.

+0

'out = open ("man_speech.txt", "w"); out = open ("other_speech.txt", "w") '- Lies dieses Tutorial noch einmal. – TigerhawkT3

+0

Was? Warum auch duplizieren? Ich verbrachte 50 Minuten mit der Suche nach einer ähnlichen Frage, und ich fand keine – Monok

+0

Sie müssen überprüfen, wie Variablennamen funktionieren. Das Duplikat erklärt, wie man mit Dateien arbeitet. – TigerhawkT3

Antwort

1

Es scheint ein Problem mit den Dateinamen zu sein:

out = open("man_speech.txt", "w") # Defining out instead of man_speech 
out = open("other_speech.txt", "w") # Redefining out 
print(man, file=man_speech)   # Using undefined man_speech 
print(other, file=other_speech)  # Using undefined other_speech 

Sie das Ergebnis nicht von open-man_speech zuweisen, sondern out. Daraus ergibt sich die Fehlermeldung:

NameError: name 'man_speech' is not defined 

Der Code

man_speech = open("man_speech.txt", "w") 
other_speech = open("other_speech.txt", "w") 
print(man, file=man_speech) 
print(other, file=other_speech) 
2

sein sollten, wenn Sie die Datei hier öffnen:

out = open("man_speech.txt", "w") 

Sie die Datei zuweisen auf die out Variable, gibt es keine solche Variable namens man_speech. Deshalb löst es eine NameError aus und sagt man_speech ist nicht definiert.

Sie müssen es

ändern
man_speech = open("man_speech.txt", "w") 

Das gleiche gilt für other_speech

+0

Oh ... Ahahahah, ok, ich verstehe! Wann immer ich Daten in einer Datei speichern muss, muss ich eine Variable genau wie meine Datei erstellen? – Monok

+0

Nein. Sie können sie Datei1 und Datei2 nennen, aber dann müssen Sie Datei1 und Datei2 verwenden, um auf sie zu verweisen. 'file1 = open (" man_speech.txt "," w ")' 'drucken (man, file = file1)' 'file1.close()' –

+0

Sie können die Variable beliebig benennen, solange es Sinn macht Sie und Ihre Kollegen, und Sie verwenden den gleichen Variablennamen, um sich darauf zu beziehen :) –

Verwandte Themen