2017-03-06 87 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() 

該程序應該查找文件,打開並讀取它,如果它存在。Python嘗試在while循環中除外

因此,我打開程序,試圖尋找一個文件讓我們說名字「約翰」,但它不存在,所以程序關閉,甚至在一個while循環。當我查找一個文件並且它存在時,它的信息被打印出來並且我的程序按預期工作。

從那裏我可以找到一個不存在的文件,並打印出像我想要的Datoteka %s ne postoji.。 所以這裏的問題是我在程序中查找的第一個文件名。 如果它的正確性比良好...程序將從那裏起作用。

但是,如果它的錯誤...程序只是關閉,你必須再次打開程序。

+2

不要使用裸體'除了'條款。 –

回答

4

當文件不存在時,無法打開。變量printaj未初始化。 printaj.close()導致NameError,程序崩潰。可能的解決方案:

  • 移動printaj.close()到你的代碼的try塊,剛過printaj.read()
  • 使用with open(ime, "r") as printaj,它會自動關閉該文件(在評論好心建議)
+2

或者使用'open(ime,「r」)作爲printaj:'然後它爲你處理關閉。 – TemporalWolf

+2

更好的是,使用'with'塊。 –

+0

謝謝....只需將printaj.close()移入try塊即可。 – Cager