在Python循环中下载多个文件,只有第一个文件有效
我试图从链接列表中下载一些视频。 文本文件中的每一行都是一个链接。 当我尝试下载循环中的所有视频时,只有第一个视频起作用。 视频大小为60-100MB。 循环随后继续,但文件为空 谢谢你的帮助在Python循环中下载多个文件,只有第一个文件有效,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我试图从链接列表中下载一些视频。 文本文件中的每一行都是一个链接。 当我尝试下载循环中的所有视频时,只有第一个视频起作用。 视频大小为60-100MB。 循环随后继续,但文件为空 谢谢你的帮助 def download(): name = 'video' a = 1 with open('download.txt') as f: lines = f.readlines() for line in lines:
def download():
name = 'video'
a = 1
with open('download.txt') as f:
lines = f.readlines()
for line in lines:
url = line
response = requests.get(url, stream=True)
name = name + str(a)
filename = name + '.mp4'
with open(filename, 'wb') as f:
f.write(response.content)
a = a + 1
这个代码对我有用
根据您的目的,您可能需要考虑安全性、健壮性(如果一次下载失败会发生什么情况?)和性能(并发性?)。您首先在哪里声明“名称”?它似乎在循环中附加到自身,但我看不到它的初始化位置。可能名称正在增长,没有重置。抱歉,我添加了它。它在我的代码中,所以这不是问题。Loop会创建具有唯一名称的文件,但除了第一个文件外,这些文件都是空的。您还可以发布文件中内容的剪贴吗?这些链接真的有内容吗?每个文件中都有400个错误请求。链接是确定的,当我打开它们。我试着去睡觉,但没用。谢谢。现在只是为了个人和教学目的,但我会努力改进它。jasonharper的解决方案也起了作用,它只是在download.txt中形成了行的错误。
def download():
name = 'video'
a = 1
with open('download.txt') as f:
lines = f.readlines()
for line in lines:
urllib.request.urlretrieve(line.strip(), name + str(a) + ".mpg")
a += 1