Python. Как из ссылки достать имя файла с расширением

Есть тестовая ссылка url = 'https://example.com/txt/hello%20world.txt?v=9#python'. Необходимо максимально коротким способом достать из неё имя файла с расширением.

Мой способ :

unquoted_url = unquote_plus(string=url, encoding='utf-8', errors='Replace')
filename = os.path.basename(unquoted_url).split('?')[0]

Вопрос: есть ли ещё более короткий метод? И чтоб не спотыкался о пробелы, якорь, GET-параметры.


Ответы (1 шт):

Автор решения: Стас

Например так:

from urllib import parse

unquoted_url = parse.unquote("https://example.com/txt/hello%20world.txt?v=9#python")
path = parse.urlparse(unquoted_url).path

print(path.rstrip("/").split("/")[-1])
  • path здесь это: /txt/hello world.txt
  • rstrip я вызываю для обеспечения корректной работы при обработке url, заканчивающихся на / (например, https://example.com/). Иначе, вы получите лишь пустую строку
  • Далее, просто делю по / и беру последний элемент списка

STDOUT:

hello world.txt
→ Ссылка