WordPress课程广告

Python从路径|URL中获取文件名、文件后缀的方法

释放双眼,带上耳机,听听看~!

Python从路径|URL中获取文件名、文件后缀的方法分享:

我们可以通过urlparse模块中的urllib.parse方法、os.path模块或者是字符串split、rfind等方法去实现,非常简单。这样就不用去写正则了哈哈哈。

一般情况下urlparse更合适解析URL(URL中有参数的时候,不需要做其他处理),os.path模块则更合适处理本地路径,所以大部分时候个人建议选择这两种方式也就可以了,当然你也可以选择字符串split、rfind等方法…

下面分享下示例代码:

os.path模块

import os

os.path.basename()
file_path = r"C:\Users\Desktop\hellopython.py"
# os.path.dirname() 从指定路径获取目录名称
os.path.dirname(file_path)  # C:\Users\Desktop
# os.path.basename() 返回path最后的文件名
os.path.basename(file_path)  # hellopython.py

urllib.parse模块

urllib.parse是一个用于解析URL的模块。官方文档链接:urllib.parse 用于解析 URL

urllib.parse.urlparse会将一个 URL 解析为六个部分,返回一个包含 6 项的 named tuple(所以我们可以通过索引或作为命名属性访问)。 这对应于 URL 的主要结构: scheme://netloc/path;parameters?query#fragment。 每个元组项均为字符串,可能为空字符串。 这些部分不会再被拆分为更小的部分(例如,netloc 将为单个字符串),并且 % 转义不会被扩展。 上面显示的分隔符不会出现在结果中,只有 path 部分的开头斜杠例外,它如果存在则会被保留。

完整内容如下:

属性索引值(如果不存在)
scheme0URL协议scheme 参数
netloc1网络位置部分空字符串
path2分层路径空字符串
params3最后路径元素的参数空字符串
query4查询组件空字符串
fragment5片段识别空字符串
username用户名None
password密码None
hostname主机名(小写)None
port端口号为整数(如果存在)None

示例代码:

from urllib.parse import urlparse
urlparse("scheme://netloc/path;parameters?query#fragment")
ParseResult(scheme='scheme', netloc='netloc', path='/path;parameters', params='',
            query='query', fragment='fragment')
o = urlparse("http://docs.python.org:80/3/library/urllib.parse.html?"
             "highlight=params#url-parsing")
o
ParseResult(scheme='http', netloc='docs.python.org:80',
            path='/3/library/urllib.parse.html', params='',
            query='highlight=params', fragment='url-parsing')
o.scheme
'http'
o.netloc
'docs.python.org:80'
o.hostname
'docs.python.org'
o.port
80
o._replace(fragment="").geturl()
'http://docs.python.org:80/3/library/urllib.parse.html?highlight=params'

urllib.parse.urlparse解析URL获取文件名实例代码

urllib.parse.urlparse中直接获取path,有参数也可以不用做其他处理,直接提取我们要的文件名或者是文件后缀即可。

import os
from urllib.parse import urlparse

test_url = "http://domain.com/path/img_name.jpg?xxxxxz"
parse_url = urlparse(test_url)
file_path = parse_url.path  # 获取路径
print(file_path)  # /path/img_name.jpg
# 配合os.path模块获取
file_name = os.path.basename(parse_url.path)
print(file_name)  # img_name.jpg
# os.path.splitext(path)	分割路径,返回路径名和文件扩展名的元组
file_name, file_suffix = os.path.splitext(file_name)
print(file_name)  # img_name
print(file_suffix)  # .jpg

字符串 split方法

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串,返回值是一个列表,我们通过对路径中的\进行切片,然后使用[-1]拿到最后一个值,就是文件名了。

split方法详情:Python split()方法 | 菜鸟教程

示例代码

file_path = r"C:\Users\Desktop\hellopython.py"
print(file_path.split("\\")[-1]) # hellopython.py

字符串 rfind方法

Python rfind() 返回字符串最后一次出现的位置,如果没有匹配项则返回 -1。

我们使用它找到\最后一次出现的位置,然后通过对字符串使用索引去获取文件名。

rfind方法详情:Python rfind()方法 | 菜鸟教程

file_path = r"C:\Users\Desktop\hellopython.py"
a_index = file_path.rfind("\\")  # 找到"\"出现的位置
print(file_path[a_index + 1:])  #  hellopython.py
print(file_path[:a_index])  # C:\Users\Desktop

给TA打赏
共{{data.count}}人
人已打赏
Python字典Python笔记

Python获取字典的前x个元素

2023-5-10 20:38:32

Python RequestsPython与SEOPython爬虫Python笔记WordPress与SEOWordPress技巧精品资源

WordPress远程发布接口模块分享

2023-8-10 19:39:33

WordPress网站建设宣传图片
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录