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

spi*_*paz 3 python urllib download request python-3.x

Python 3.可能需要使用urllib来做到这一点,

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

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

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

该示例链接导致文件:

下载截图

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

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

Pet*_*ood 5

使用urllib.request,当你请求从一个URL的响应,响应包含你正在下载的URL参考.

>>> 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'
Run Code Online (Sandbox Code Playgroud)

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

>>> from os.path import basename
>>> basename(response.url)
'MechJeb2-2.6.0.0.zip'
Run Code Online (Sandbox Code Playgroud)