使用Python库下载相同文件但名称不同

时间:2019-09-07 03:44:45

标签: python

我是Python编程的初学者,希望获得一些帮助修复我的代码。我目前正在使用Python请求库从URL列表中下载一堆PDF文件,并将它们保存为预设名称(这也被提取到另一个列表中)。下面是我的代码:

import requests
from pathlib import Path

url = dict_url.values() #list of URLs that I want to download
filename = dict_url.keys() #list of file names that I want to save my downloaded files as

for k in url:
    for i in filename:
        name = Path(i)
        link = k
        response = requests.get(link)
        name.write_bytes(response.content)

我可以使用它,但是我的输出是一个相同的PDF文件,但是以不同的名称下载了许多次。我希望它下载不同的PDF文件,并从列表中保存其相应名称。

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

问题是您的嵌套循环正在下载单个文件x次,其中x是文件名的数量。然后,将其重命名为每个文件名。然后下载下一个文件,将其重命名x次,覆盖先前的下载。可以通过删除嵌套循环来解决此问题。

for k in dict_url: #loop through origional dict
    name = Path(k) #k is key
    link = dict_url[k] #get value by lookup using key
    response = requests.get(link)
    name.write_bytes(response.content)

答案 1 :(得分:0)

这应该给您带来更好的结果。只有一个循环将使您可以同时循环浏览文件名和url。

import requests
from pathlib import Path

for i, k in dict_url.items():
        name = Path(i)
        link = k
        response = requests.get(link)
        name.write_bytes(response.content)