Hallo,
CrazyVlad1992 hat geschrieben:
Meine Frage: Wie sollte ich das verändern damit die Funktion stimmt :/ Falls es geht könntet ihr mir irgendwie einen Denkanstoß geben damit ich dabei auch was lerne
?
Du musst besser beschreiben, was an dem gezeigten Code nicht funktioniert! Entweder bei einem Fehler diesen exakt so posten, wie er in der Konsole ausgegeben wird (copy & paste), oder ansonsten das Verhalten beschreiben und erklären, welches Du eigentlich erwartet hättest. Nur so können Dir andere helfen, ohne erst zig Gegenfragen stellen zu müssen.
Code gehört auch immer in die Python-Code-Tags; Daten oder anderer Code in "normale" Code-Tags. Da Einrückungen ein syntaktisches Element der Sprache sind, verfälscht das Weglassen der Einrückungen schließlich den Code - und genau das verhindern die Code-Tags
Vielleicht schon mal ein paar Anmerkungen:
Code: Alles auswählen
filename = raw_input("Enter filename: ")
if len(filename) == 0:
print "IOError"
Die Meldung IOError suggeriert, dass eine Exception aufgetreten ist. Da sie das aber ja nicht ist, verwirrt das einen Anwender eher, als dass es nützt. Wieso nicht explizit hinschreiben, dass der Dateiname leer ist? Zudem willst Du dann ja wohl entweder noch einen Namen eingeben lassen oder aber das Programm beenden, oder? Letzteres ginge an der Stell z.B. über
Danach geht es so ähnlich weiter. Nur weil man einen Namen hat, muss die Datei ja nicht existieren oder sich öffnen lassen. Insofern überlasse die Exceptions doch einfach dem Interpreter und fange si ggf. ab. Da das natürlich kein Stoff für einen blutigen Anfänger ist, lasse es halt erst einmal.
Dateien öffnet man mit diesem Idiom:
Code: Alles auswählen
with open(filename, "r") as infile:
# infile ist in diesem Block das geöffnete file Objekt
data = infile.read()
Vorteil: Die Datei wird auf jeden Fall geschlossen, egal, ob eine Exception auftritt oder nicht.
`file.read` liest alles ein - nicht nur eine Zeile. Willst Du die Datei zeilenweise, musst Du über das file-object iterieren:
Code: Alles auswählen
# infile ist file object
for line in infile:
print line
Solltest Du Python 2.x benutzen, dann verunstalte `print` doch nicht als Funktion und lass die Klammern weg! Zudem gehören die Klammern immer direkt an den Namen:
Du importierst zig Module, die Du gar nicht verwendest. Wozu das?
Generell kenne ich jetzt Deine Motivation nicht, aber Du solltest wohl erst einmal ein gutes Tutorial durcharbeiten, bevor Du Dir Dinge zusammenschusterst, die Du nicht verstehst.