Python 3:urllib.request.urlopen和Progressbar

帕斯卡尔·巴约拉特(Pascal Bajorat)

我是Python的新手,在获取一些HTML文件/ URL的内容并使用进度条显示状态时遇到问题:

这是我使用的相关代码:

进度条:

def createProgressbar(self):
        self.progressbarVar = StringVar()
        self.progressbar = ttk.Progressbar( self.masterWindow, variable=self.progressbarVar, length=400, maximum=100, mode='determinate' )
        self.progressbar.place(x=100, y=760)

        self.progressbarStatus = Label( self.masterWindow, text='Please wait ...', bg='#fafafa', fg='#333', bd=0 )
        self.progressbarStatus.place(x=100, y=730)

阅读HTML:

def readHTML(self):
        # Set new progressbar max, eg. 20 for 20 files to read
        self.progressbar.config(maximum=self.LinkListItemCount)

        # Progressbar Counter
        i=1

        # example for self.LinkListByCatDict
        # self.LinkListByCatDict = {'cat1': ['/test/asd.html', '/test/asd2.html'], 'cat2': ['/test/asd.html', '/test/asd2.html']}

        for item in self.LinkListByCatDict.items():
            actCategory = item[0]

            for linkItem in item[1]:
                url = 'http://www.example.com'+linkItem

                try:
                    req = urllib.request.Request( url )
                    open = urllib.request.urlopen( req )
                    requestContent = open.read()


                    if self.debug == True:
                        print('OK: '+url)
                except:
                    if self.debug == True:
                        print('Error: '+url)


                # Progressbar update
                self.progressbarVar.set(i)

                if self.debug == True:
                    print('Progressbar act: '+str(i))

                i += 1

通常,它可以正常工作,但是在处理循环时,整个界面仅显示一个沙滩球(Mac OS)。在循环结束时,进度条从0直接跳到100%。

有没有更好的方法可以做到这一点,而无需挂断接口?

Ramchandra Apte

不要一口气读取数据;这会阻塞用户界面。取而代之的是,通过使字节的量读出的数据的一个小的量(例如字节1024分之8192) open.read()例如open.read(1024)读取数据之后,使用刷新app.update()应用程序的UI ,假设app是Tk实例(在代码中的某个位置,您应该向分配了一些变量Tk())。将其放入while循环中,并在read()函数返回空字节字符串(b"")(表示下载完成)时停止while外观不知道为什么进度条从0跳到100%,我将运行代码并进行调查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 3:urllib.request.urlopen和Progressbar

来自分类Dev

urllib.request.urlopen(url) 在 python 3 中不起作用

来自分类Dev

python:urllib.request.urlopen不起作用

来自分类Dev

urllib.request 的 urlopen 无法在 python 3.7 中打开页面

来自分类Dev

如何使用urlopen和urllib修复Python 3中的HTTP错误

来自分类Dev

Python3 urllib.request不会立即关闭连接

来自分类Dev

将代理设置为urllib.request(Python3)

来自分类Dev

Python request.packages.urllib3.connection.VerifiedHTTPSConnection [Errno 11004]

来自分类Dev

Python3:Urllib.request无法正常工作

来自分类Dev

Python urllib3 urlopen不使用重试,而具体错误

来自分类Dev

urllib2和HTTPErrorProcessor Python 3

来自分类Dev

python请求.get()和urrlib.request.urlopen()之间的区别

来自分类Dev

互联网连接中断时,Python的urllib.request.urlopen

来自分类Dev

Python请求lib工作,urllib.request.urlopen POST不工作

来自分类Dev

Python 3.6.2 url.request.urlopen() urllib.error.HTTPError:HTTP 错误 403:禁止

来自分类Dev

urllib.request.urlopen()是做什么的?

来自分类Dev

Python 3-带有urllib.request的POST请求返回HTML数据

来自分类Dev

为什么我能够在python 3 urllib.request中读取HEAD http请求?

来自分类Dev

python request / urllib3连接池未捕获HTTP错误

来自分类Dev

仅当脚本从办公室在cronjob上运行时,Python request / urllib3 NewConnectionError

来自分类Dev

Python 3-带有urllib.request的POST请求返回HTML数据

来自分类Dev

Urllib.request和BeautifulSoup

来自分类Dev

urllib.error.URLError:<urlopen错误,未提供主机> python 3

来自分类Dev

Python文档:urllib.request.urlopen(URL,data = None,[timeout,] *,cafile = None中的方括号是什么意思?

来自分类Dev

urllib,urllib2,urllib.request.open,AttributeError:“模块”对象没有属性“ urlopen”

来自分类Dev

替换urllib.request.urlopen(url,ca *)的开启器

来自分类Dev

Python XML解析,lxml,urllib.request

来自分类Dev

Python urllib urlopen不起作用

来自分类Dev

Python3 Wolframalpha 给出错误:urllib.error.URLError <urlopen 错误 [Errno 101] 网络无法访问>

Related 相关文章

  1. 1

    Python 3:urllib.request.urlopen和Progressbar

  2. 2

    urllib.request.urlopen(url) 在 python 3 中不起作用

  3. 3

    python:urllib.request.urlopen不起作用

  4. 4

    urllib.request 的 urlopen 无法在 python 3.7 中打开页面

  5. 5

    如何使用urlopen和urllib修复Python 3中的HTTP错误

  6. 6

    Python3 urllib.request不会立即关闭连接

  7. 7

    将代理设置为urllib.request(Python3)

  8. 8

    Python request.packages.urllib3.connection.VerifiedHTTPSConnection [Errno 11004]

  9. 9

    Python3:Urllib.request无法正常工作

  10. 10

    Python urllib3 urlopen不使用重试,而具体错误

  11. 11

    urllib2和HTTPErrorProcessor Python 3

  12. 12

    python请求.get()和urrlib.request.urlopen()之间的区别

  13. 13

    互联网连接中断时,Python的urllib.request.urlopen

  14. 14

    Python请求lib工作,urllib.request.urlopen POST不工作

  15. 15

    Python 3.6.2 url.request.urlopen() urllib.error.HTTPError:HTTP 错误 403:禁止

  16. 16

    urllib.request.urlopen()是做什么的?

  17. 17

    Python 3-带有urllib.request的POST请求返回HTML数据

  18. 18

    为什么我能够在python 3 urllib.request中读取HEAD http请求?

  19. 19

    python request / urllib3连接池未捕获HTTP错误

  20. 20

    仅当脚本从办公室在cronjob上运行时,Python request / urllib3 NewConnectionError

  21. 21

    Python 3-带有urllib.request的POST请求返回HTML数据

  22. 22

    Urllib.request和BeautifulSoup

  23. 23

    urllib.error.URLError:<urlopen错误,未提供主机> python 3

  24. 24

    Python文档:urllib.request.urlopen(URL,data = None,[timeout,] *,cafile = None中的方括号是什么意思?

  25. 25

    urllib,urllib2,urllib.request.open,AttributeError:“模块”对象没有属性“ urlopen”

  26. 26

    替换urllib.request.urlopen(url,ca *)的开启器

  27. 27

    Python XML解析,lxml,urllib.request

  28. 28

    Python urllib urlopen不起作用

  29. 29

    Python3 Wolframalpha 给出错误:urllib.error.URLError <urlopen 错误 [Errno 101] 网络无法访问>

热门标签

归档