urllib:从直接下载链接获取文件名

时间:2017-03-31 22:17:40

标签: python python-3.x download request urllib

Python 3。可能需要使用urllib来执行此操作,

我需要知道如何向直接下载链接发送请求,并获取它尝试保存的文件的名称。

(例如,来自CurseForge的KSP mod:https://kerbal.curseforge.com/projects/mechjeb/files/2355387/download

当然,文件ID(2355387)将会更改。它可以来自任何项目,但总是在CurseForge上。 (如果这对下载方式产生影响。)

该示例链接产生文件:

Download Screenshot

如何在Python中返回该文件名?

编辑:我应该注意,我想避免保存文件,读取名称,然后尽可能删除它。这似乎是最糟糕的做法。

2 个答案:

答案 0 :(得分:5)

使用urllib.request,当您从网址请求回复时,回复中包含对您正在下载的网址的引用。

>>> from urllib.request import urlopen    
>>> url = 'https://kerbal.curseforge.com/projects/mechjeb/files/2355387/download'
>>> response = urlopen(url)
>>> response.url
'https://addons-origin.cursecdn.com/files/2355/387/MechJeb2-2.6.0.0.zip'

您可以使用os.path.basename获取文件名:

>>> from os.path import basename
>>> basename(response.url)
'MechJeb2-2.6.0.0.zip'

答案 1 :(得分:0)

from urllib import request

url = 'file download link'
filename = request.urlopen(request.Request(url)).info().get_filename()