我有一个程序,该程序会在发现网站时下载并下载文件。通常它运行得很好,但在其他时候,它会在程序完成搜索序列之前终止程序的运行。我很难过。它只有在搜索时才会退出。我目前猜测一个套接字错误的问题,但正如我上面说的,我很难过。我已经放入了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 '方法。 –