英文:
downloading video with python requests content receiving status
问题
我正在使用Python的requests模块下载视频。
我想知道当前下载了多少内容,就像在浏览器中看到的那样,已下载x字节,共y字节。
我已经附上了下面的代码,这是我正在使用的。
我该如何实现我上面说的?
print(f'[+] 正在下载 "{file}" ({sizeInMb} MB)...')
with requests.get(url, stream=True) as r:
with open(filePath, 'wb+') as f:
shutil.copyfileobj(r.raw, f)
print(f'[-] 已下载 "{file}".')
downloadCount += 1
英文:
I am downloading video using python requests module.
I want to know how much content is received currently while downloading like we see in browsers etc. x bytes downloaded of y bytes.
I have attached the code below what I'm using.
How can I achieve what I said above?
print(f'[+] Downloading "{file}" ({sizeInMb} MB)...')
with requests.get(url, stream=True) as r:
with open(filePath, 'wb+') as f:
shutil.copyfileobj(r.raw, f)
print(f'[-] Downloaded "{file}".')
downloadCount += 1
答案1
得分: 2
要创建一个下载进度条,你可以在Python中使用wget
模块。
import wget
url = 'https://www.tutorialspoint.com/python3/python3_tutorial.pdf'
file_name = wget.download(url)
print()
print(file_name)
我在这里使用了一个随机的PDF文件作为参考。你也可以在wget.download
函数中使用out
参数来更新下载的文件路径和文件名。
最终输出:
100% [..........................................................................] 1015876 / 1015876
python3_tutorial.pdf
英文:
To have a download bar, you can use the wget
module in Python.
import wget
url = 'https://www.tutorialspoint.com/python3/python3_tutorial.pdf'
file_name = wget.download(url)
print()
print(file_name)
I used a random PDF as a reference here. You can also update the downloaded file path and filename in the wget.download
function, using the out
argument.
Final Output:
100% [..........................................................................] 1015876 / 1015876
python3_tutorial.pdf
答案2
得分: 1
你可以使用requests
库的iter_content()
方法以块的方式下载视频并跟踪下载进度。iter_content()
方法返回一个生成器,按照它们被下载的顺序产生文件的块。你可以使用len()
函数来获取文件的总大小,然后使用计数器来跟踪到目前为止已下载多少字节。
以下是如何执行这个操作的示例代码:
import requests
def download_video(url):
response = requests.get(url, stream=True)
file_size = int(response.headers['Content-Length'])
downloaded = 0
with open('video.mp4', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
downloaded += len(chunk)
print(f'Downloaded {downloaded}/{file_size} bytes')
f.write(chunk)
if __name__ == '__main__':
download_video('https://www.example.com/video.mp4')
输出将会是:
Downloaded 0/1024000 bytes
Downloaded 1024000/1024000 bytes
英文:
you can use the iter_content()
method of the requests
library to download the video as chunks and track the progress of the download. The iter_content()
method returns a generator that yields the chunks of the file as they are downloaded. You can use the len()
function to get the total size of the file, and then use a counter to track how many bytes have been downloaded so far.
Here is an example of how to do this:
import requests
def download_video(url):
response = requests.get(url, stream=True)
file_size = int(response.headers['Content-Length'])
downloaded = 0
with open('video.mp4', 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
downloaded += len(chunk)
print(f'Downloaded {downloaded}/{file_size} bytes')
f.write(chunk)
if __name__ == '__main__':
download_video('https://www.example.com/video.mp4')
output be like:
Downloaded 0/1024000 bytes
Downloaded 1024000/1024000 bytes
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论