Python urllib:从直接下载链接获取文件名
Python 3。可能需要使用urllib来完成此操作 我需要知道如何向直接下载链接发送请求,并获取它试图保存的文件的名称 (例如,来自CurseForge:的KSP mod) 当然,文件ID(Python urllib:从直接下载链接获取文件名,python,python-3.x,download,request,urllib,Python,Python 3.x,Download,Request,Urllib,Python 3。可能需要使用urllib来完成此操作 我需要知道如何向直接下载链接发送请求,并获取它试图保存的文件的名称 (例如,来自CurseForge:的KSP mod) 当然,文件ID(2355387)将被更改。它可以来自任何项目,但总是在CurseForge上。(如果这对下载方式有影响的话。) 该示例链接将生成以下文件: 如何在Python中返回该文件名 编辑:我应该注意,我希望避免保存文件、读取名称,然后尽可能删除它。这似乎是最糟糕的方法。当您从url请求响应时,响应包含对您正在下
2355387
)将被更改。它可以来自任何项目,但总是在CurseForge上。(如果这对下载方式有影响的话。)
该示例链接将生成以下文件:
如何在Python中返回该文件名
编辑:我应该注意,我希望避免保存文件、读取名称,然后尽可能删除它。这似乎是最糟糕的方法。当您从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'
您可以使用获取文件名:
>>> from os.path import basename
>>> basename(response.url)
'MechJeb2-2.6.0.0.zip'
对我来说,
os.path
在URL上工作也很奇怪。这是有意的还是无意的好处?请参阅的答案。一般来说,您可能希望结合使用和posixpath
。您好,欢迎使用SO!虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请阅读,然后
from urllib import request
url = 'file download link'
filename = request.urlopen(request.Request(url)).info().get_filename()