在Python
3的文件下载过程中,我需要显示一个进度。我已经看到了一些关于主题,但是考虑到我对编程不熟悉,没有人张贴完整的示例,只是其中的一部分,或者是我可以使Python
3上的工作对我没有好处…
附加信息:
好的,所以我有这个:
from urllib.request import urlopen
import configparser
#checks for files which need to be downloaded
print(' Downloading...')
file = urlopen(file_url)
#progress bar here
output = open('downloaded_file.py','wb')
output.write(file.read())
output.close()
os.system('downloaded_file.py')
脚本通过python命令行运行
有urlretrieve()
将URL下载到文件并允许指定reporthook回调来报告进度的方法:
#!/usr/bin/env python3
import sys
from urllib.request import urlretrieve
def reporthook(blocknum, blocksize, totalsize):
readsofar = blocknum * blocksize
if totalsize > 0:
percent = readsofar * 1e2 / totalsize
s = "\r%5.1f%% %*d / %d" % (
percent, len(str(totalsize)), readsofar, totalsize)
sys.stderr.write(s)
if readsofar >= totalsize: # near the end
sys.stderr.write("\n")
else: # total size is unknown
sys.stderr.write("read %d\n" % (readsofar,))
urlretrieve(url, 'downloaded_file.py', reporthook)
这是一个GUI进度栏:
import sys
from threading import Event, Thread
from tkinter import Tk, ttk
from urllib.request import urlretrieve
def download(url, filename):
root = progressbar = quit_id = None
ready = Event()
def reporthook(blocknum, blocksize, totalsize):
nonlocal quit_id
if blocknum == 0: # started downloading
def guiloop():
nonlocal root, progressbar
root = Tk()
root.withdraw() # hide
progressbar = ttk.Progressbar(root, length=400)
progressbar.grid()
# show progress bar if the download takes more than .5 seconds
root.after(500, root.deiconify)
ready.set() # gui is ready
root.mainloop()
Thread(target=guiloop).start()
ready.wait(1) # wait until gui is ready
percent = blocknum * blocksize * 1e2 / totalsize # assume totalsize > 0
if quit_id is None:
root.title('%%%.0f %s' % (percent, filename,))
progressbar['value'] = percent # report progress
if percent >= 100: # finishing download
quit_id = root.after(0, root.destroy) # close GUI
return urlretrieve(url, filename, reporthook)
download(url, 'downloaded_file.py')
在Python
3.3上urlretrieve()
具有不同的reporthook
接口(请参阅问题16409)。要解决此问题,您可以通过访问以下界面FancyURLopener
:
from urllib.request import FancyURLopener
urlretrieve = FancyURLopener().retrieve
要在同一线程中更新进度条,可以内联urlretrieve()
代码:
from tkinter import Tk, ttk
from urllib.request import urlopen
def download2(url, filename):
response = urlopen(url)
totalsize = int(response.headers['Content-Length']) # assume correct header
outputfile = open(filename, 'wb')
def download_chunk(readsofar=0, chunksize=1 << 13):
# report progress
percent = readsofar * 1e2 / totalsize # assume totalsize > 0
root.title('%%%.0f %s' % (percent, filename,))
progressbar['value'] = percent
# download chunk
data = response.read(chunksize)
if not data: # finished downloading
outputfile.close()
root.destroy() # close GUI
else:
outputfile.write(data) # save to filename
# schedule to download the next chunk
root.after(0, download_chunk, readsofar + len(data), chunksize)
# setup GUI to show progress
root = Tk()
root.withdraw() # hide
progressbar = ttk.Progressbar(root, length=400)
progressbar.grid()
# show progress bar if the download takes more than .5 seconds
root.after(500, root.deiconify)
root.after(0, download_chunk)
root.mainloop()
download2(url, 'downloaded_file.py')
问题内容: 我正在开发一个带有Java组件的网站项目,目前正在测试跨浏览器的兼容性。大部分都很好,但是Java部分不会在64位浏览器上加载。看起来我需要64位JRE进行测试。在哪里可以下载Windows的(离线)64位Java运行时安装程序? 官方下载页面在这里:http : //www.java.com/en/download/manual.jsp 除非我是盲人,否则除了指向注释的链接之外,Wi
我编写了以下代码来禁用ChromePDF查看器,以便在Chrome打开链接时,PDF文件可以在C:\下载文件夹中自动下载。 不幸的是,我相信PDF查看器没有被正确禁用。以下是我打开PDF url时使用此代码得到的结果: 有没有其他解决方案可以在Chrome中自动下载文件?
我将nginx作为带有PHP-fpm的web服务器。我可以成功地看到我的网站使用http,但如果我使用https,我将下载索引页面,页面将不会显示。 我的nginx.conf 和conf.d/default。形态
我是Python3新手,我正在尝试在登录网站后下载一个文档。 我有2个网址,可以让我立即登录到网页和下载文件。登录后,以下各项: https://www.xxxcompany.com/login.action?loginname=name 这是我的密码。它肯定不起作用,也不会给我打印状态码。我是否误解了一些概念?请帮我解决这个问题。非常感谢你!
本文向大家介绍java实现适用于安卓的文件下载线程类,包括了java实现适用于安卓的文件下载线程类的使用技巧和注意事项,需要的朋友参考一下 代码非常简单实用,这里就不多废话了,直接奉上源码 以上所述就是本文的全部内容了,希望大家能够喜欢。
问题内容: 我已经在Internet上搜索了一段时间,但无法找到有关如何在Windows下安装适用于Python 3.x的OpenCV的详细说明。 如果他/她已经成功地为预编译的二进制文件或源代码为OpenCV 2.x或OpenCV 3版本安装了适用于Python 3.x的OpenCV,我将不胜感激。。X。 问题答案: OpenCV 3添加了对python 3+的支持。它仍然处于Alpha状态,目