urllib:从直接下载中获取文件名 link
urllib: Get name of file from direct download link
Python 3. 可能需要用到urllib,
我需要知道如何向直接下载发送请求 link,并获取它试图保存的文件的名称。
(例如,来自 CurseForge 的 KSP mod:https://kerbal.curseforge.com/projects/mechjeb/files/2355387/download)
当然,文件ID(2355387
)会被改变。它可以来自任何项目,但总是在 CurseForge 上。 (如果这对下载方式有影响。)
该示例 link 生成文件:
如何 return Python 中的那个文件名?
编辑: 我应该注意,我想避免保存文件,读取名称,然后尽可能删除它。这似乎是最糟糕的方法。
使用 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'
您可以使用os.path.basename
获取文件名:
>>> from os.path import basename
>>> basename(response.url)
'MechJeb2-2.6.0.0.zip'
from urllib import request
url = 'file download link'
filename = request.urlopen(request.Request(url)).info().get_filename()
Python 3. 可能需要用到urllib,
我需要知道如何向直接下载发送请求 link,并获取它试图保存的文件的名称。
(例如,来自 CurseForge 的 KSP mod:https://kerbal.curseforge.com/projects/mechjeb/files/2355387/download)
当然,文件ID(2355387
)会被改变。它可以来自任何项目,但总是在 CurseForge 上。 (如果这对下载方式有影响。)
该示例 link 生成文件:
如何 return Python 中的那个文件名?
编辑: 我应该注意,我想避免保存文件,读取名称,然后尽可能删除它。这似乎是最糟糕的方法。
使用 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'
您可以使用os.path.basename
获取文件名:
>>> from os.path import basename
>>> basename(response.url)
'MechJeb2-2.6.0.0.zip'
from urllib import request
url = 'file download link'
filename = request.urlopen(request.Request(url)).info().get_filename()