我有一个python脚本,启动一个URL是一个可下载的文件。有没有办法让python使用命令行显示下载进度,反对启动浏览器?Python的进度条和下载
回答
更新为您的样品网址:
我刚写了一个超级简单(略哈克)的办法处理这一刮PDF文件关闭某个网站。请注意,它只是正常工作在基于UNIX系统(Linux,Mac OS)的PowerShell不会处理“\ r”
link = "http://indy/abcde1245"
file_name = "download.data"
with open(file_name, "wb") as f:
print "Downloading %s" % file_name
response = requests.get(link, stream=True)
total_length = response.headers.get('content-length')
if total_length is None: # no content length header
f.write(response.content)
else:
dl = 0
total_length = int(total_length)
for data in response.iter_content(chunk_size=4096):
dl += len(data)
f.write(data)
done = int(50 * dl/total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)))
sys.stdout.flush()
它使用requests library所以你需要安装。该输出类似于下面的到你的控制台:
>Downloading download.data
>[============= ]
进度条宽52个字符的脚本(2个字符是简单的[]
这样的进度50个字符)。每个=
代表下载的2%。
我该如何appliy到这个网址http:// indy/abcde1245 – user1607549 2013-03-26 18:58:08
@ user1607549已更新用于您的示例链接 – Endophage 2013-03-26 19:02:51
请求没有被定义在任何地方 – user1607549 2013-03-26 19:12:43
您可以使用“clint”包(由同一作者的“请求”写的),以一个简单的进度栏添加到您的下载这样的:
from clint.textui import progress
r = requests.get(url, stream=True)
path = '/some/path/for/file.txt'
with open(path, 'wb') as f:
total_length = int(r.headers.get('content-length'))
for chunk in progress.bar(r.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1):
if chunk:
f.write(chunk)
f.flush()
,这将给你一个动态输出,看起来像这样:
[################################] 5210/5210 - 00:00:01
它应该在多个平台上工作!你将can also change设置为圆点或者带有.dots和.mill而不是.bar的微调。
享受!
如果这可以成为python标准库的一部分,那将会很棒。 – 2014-08-16 08:16:31
'路径'是什么? – 2015-02-01 15:19:20
path是要保存文件的文件名。 – tshrinivasan 2015-12-06 16:53:44
我认为你也可以使用click,它也有一个很好的进度条库。
import click
with click.progressbar(length=total_size, label='Downloading files') as bar:
for file in files:
download(file)
bar.update(file.size)
Enjoy!
点击也是python3.6标准库的一部分,所以不需要额外安装 – MortenB 2017-06-21 10:17:14
@MortenB是不是?我得到了'ModuleNotFoundError:3.6.1上没有名为'click''的模块。 – nyuszika7h 2017-08-12 09:29:53
您可以在此下载流式下载 - >Stream a Download。您也可以Stream Uploads。
最重要的数据流,除非你试图只用2线
for line in r.iter_lines():
if line:
print(line)
我很惊讶,tqdm尚未提出访问response.content 的要求完成了!
- 1. 正在下载进度条urllib2 python
- 2. Python请求 - 下载进度条
- 3. HttpWebRequest的下载文件和进度条
- 4. 下载时的进度条
- 5. Firebase下载进度条
- 6. 进度条下载图像
- 7. 旋转进度条下载
- 8. 的Python:添加一个进度条的下载
- 9. 目标C:下载时的进度条
- 10. 下载图片时的进度条
- 11. 用于ftp下载的进度条
- 12. 下载pdf流的进度条
- 13. 进度条(下载)使用HTML 5
- 14. 进度条下载数据SQLITE javascript
- 15. 使用urlopen下载进度条
- 16. 下载图片进度条,PHP,Javascript,HTML
- 17. 下载服务器进度条pecl
- 18. 如何displaly进度条,下载附件
- 19. 下载进度
- 20. 用C#进度条显示下载进度
- 21. Python - 使用进度条和基本身份验证通过HTTP下载文件
- 22. python curses中的进度条
- 23. FLV文件下载和浏览器进度条
- 24. NSIS异步文件下载和自定义进度条
- 25. 在sqlite和python中查询进度条
- 26. Android下载进度
- 27. SwiftyDropbox下载进度
- 28. Android的下载进度
- 29. Square的OkHttp。下载进度
- 30. 加载图标/进度条
如果我的答案解决了您的问题,请将其标记为已接受(点击小勾号大纲)。 – Endophage 2013-08-12 01:49:24