2017-03-06 2 views
0
while True: 
    print "Unesite ime datoteke kojoj zelite pristupiti." 
    try: 
     ime = raw_input("") 
     printaj = open(ime, "r") 
     print "Ovo su informacije ucenika %s." % (ime) 
     print printaj.read() 
    except: 
     print "Datoteka %s ne postoji." % (ime) 
    printaj.close() 

Dieses Programm soll nach einer Datei suchen, öffnen und lesen, wenn es existiert.Python versuchen, außer in while-Schleife

Also öffne ich das Programm, versuche, nach einer Datei zu suchen, sagen wir unter dem Namen "John", aber es existiert nicht, so schließt das Programm sogar seine in einer while-Schleife. Wenn ich nach einer Datei suche und sie existiert, werden Informationen gedruckt und mein Programm funktioniert wie beabsichtigt.

Von dort kann ich nach einer Datei suchen, die nicht existiert und es druckt Datoteka %s ne postoji. wie ich wollte. Also Problem hier ist der erste Dateiname, nach dem ich in einem Programm suche. Wenn es richtig als gut ... Programm von dort funktioniert.

Aber wenn es falsch ist ... Programm schließt nur und Sie müssen das Programm erneut öffnen.

+2

nicht Verwenden Nackte 'ausgenommen' Klauseln. –

Antwort

4

Wenn die Datei nicht existiert, kann sie nicht geöffnet werden. Die Variable printaj ist nicht initialisiert. printaj.close() verursacht eine NameError, und das Programm stürzt ab. Mögliche Lösungen:

  • Verschieben printaj.close() in den try Block des Codes, kurz nach printaj.read()
  • Verwendung with open(ime, "r") as printaj, wird die Datei automatisch schließen (freundlicherweise in den Kommentaren vorgeschlagen)
+2

oder verwenden Sie 'mit öffnen (ime," r ") als printaj:' dann behandelt es das Schließen für Sie. – TemporalWolf

+2

Besser noch, benutze einen 'mit' Block. –

+0

Danke .... nur printaj.close() in den Versuch zu verschieben Block tat den Trick .. – Cager

Verwandte Themen