Python拆分网址以查找图像名称和扩展名

ApP*_*PeL 10 python django file-io

我正在寻找一种使用Python从特定网址中提取文件名和扩展名的方法

让我们说URL看起来如下

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
Run Code Online (Sandbox Code Playgroud)

我将如何获得以下信息.

filename = "da4ca3509a7b11e19e4a12313813ffc0_7"
file_ext = ".jpg"
Run Code Online (Sandbox Code Playgroud)

Chr*_*tts 30

from urlparse import urlparse
from os.path import splitext, basename

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"
disassembled = urlparse(picture_page)
filename, file_ext = splitext(basename(disassembled.path))
Run Code Online (Sandbox Code Playgroud)

唯一的缺点是你的文件名将包含一个前置/你可以随时删除.

  • 这段代码可以处理没有扩展名的文件和网址如`http://server.com/common/image.jpg?xx = 345&yy = qwerty`在3.x中BTW需要使用`来自urllib.parse import urlparse` (4认同)
  • 前面的'/'不是唯一的问题,如果url包含其他子目录,它们将保存在文件名中,也许OP想要它们,也许不是;) (2认同)

Céd*_*ien 12

尝试使用urlparse.urlsplit拆分url,然后使用os.path.splitext检索文件名和扩展名(使用os.path.basename只保留最后一个文件名):

import urlparse
import os.path

picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

print os.path.splitext(os.path.basename(urlparse.urlsplit(picture_page).path))

>>> ('da4ca3509a7b11e19e4a12313813ffc0_7', '.jpg')
Run Code Online (Sandbox Code Playgroud)


Nie*_*ein 10

filename = picture_page.split('/')[-1].split('.')[0]
file_ext = '.'+picture_page.split('.')[-1]
Run Code Online (Sandbox Code Playgroud)


bad*_*nts 5

# Here's your link:
picture_page = "http://distilleryimage2.instagram.com/da4ca3509a7b11e19e4a12313813ffc0_7.jpg"

#Here's your filename and ext:
filename, ext = (picture_page.split('/')[-1].split('.'))
Run Code Online (Sandbox Code Playgroud)

当您执行picture_page.split('/')时,它将从您的网址中返回一个字符串列表,并以分隔/。如果您知道python列表索引编制得很好,那么您就会知道-1将为您提供列表末尾的最后一个元素或第一个元素。在您的情况下,它将是文件名:da4ca3509a7b11e19e4a12313813ffc0_7.jpg

用delimeter拆分该.值,您将获得两个值: da4ca3509a7b11e19e4a12313813ffc0_7jpg,这是预期的,因为它们之间用一个句点分隔,该句点在split()调用中用作定界符。

现在,由于最后的拆分将在结果列表中返回两个值,因此您可以对其进行郁金香化。因此,基本上,结果将是:

filename,ext = ('da4ca3509a7b11e19e4a12313813ffc0_7', 'jpg')