我有一個程序,該程序會在發現網站時下載並下載文件。通常它運行得很好,但在其他時候,它會在程序完成搜索序列之前終止程序的運行。我很難過。它只有在搜索時纔會退出。我目前猜測一個套接字錯誤的問題,但正如我上面說的,我很難過。我已經放入了httperror檢查,並且沒有顯示任何http錯誤代碼。我現在試圖插入套接字錯誤檢查,它變得更瘋狂。在爲套接字錯誤檢查添加任何東西之前,它工作正常。一旦我添加套接字錯誤檢查程序將不會運行。它調出IDLE顯示並顯示光標,如IDLE已準備好並等待下一個命令。否則,如果沒有套接字錯誤檢查,則表明程序正在運行,直到tkinter窗口關閉(err程序意外終止)。如果tkinter窗口關閉,它不會在IDLE上發生任何錯誤。Python程序意外終止
我需要做些什麼來找出爲什麼這個程序有時會提前終止,並能夠將它攔截出來,這樣它就不會終止,而只是返回並重新運行同一個Web地址。我想我重新運行相同的網址照顧,但我沒有處理正確的套接字錯誤,如果它甚至是套接字錯誤的麻煩。我很難過。
#!/usr/bin/python3.4
import urllib.request
import os
from tkinter import *
import time
import urllib.error
import errno
root = Tk()
root.title("photodownloader")
root.geometry("200x200")
app = Frame(root)
app.grid()
os.chdir('/home/someone/somewhere/')
Fileupdate = 10000
Filecount = 19999
while Fileupdate <= Filecount:
try:
root.title(Fileupdate)
url = 'http://www.webpage.com/photos/'+str(Fileupdate)+'.jpg'
a = urllib.request.urlopen(url)
urllib.request.urlretrieve(url, str(Fileupdate)+'.jpg')
except urllib.error.HTTPError as err:
if err.code == 404:
Fileupdate = Fileupdate + 1
root.update_idletasks()
continue
else:
print(err.code)
Fileupdate = Fileupdate + 1
root.update_idletasks()
continue
except socket.error, v:
print(Fileupdate, v[0])
continue
Fileupdate = Fileupdate+1
root.update_idletasks()
也請分享結束塊帶有堆棧跟蹤的錯誤消息。沒有錯誤,我們可以如何幫助你? –
@MoinuddinQuadri「如果tkinter窗口關閉,它不會給IDLE **上的任何錯誤。」沒有錯誤可以得到。 –
我假設這個問題是由tkinter從不開始它的'mainloop()'引起的,有一點需要嘗試的是將代碼放在你的while循環中而不是在函數中,偶爾用'root.after '方法。 –