Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python循环中下载多个文件,只有第一个文件有效_Python_Python 3.x_Python Requests - Fatal编程技术网

在Python循环中下载多个文件,只有第一个文件有效

在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:

我试图从链接列表中下载一些视频。 文本文件中的每一行都是一个链接。 当我尝试下载循环中的所有视频时,只有第一个视频起作用。 视频大小为60-100MB。 循环随后继续,但文件为空

谢谢你的帮助

 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