Python 判断是否绝对路径ヾ(•ω•`)o
文章目录
一、什么是绝对路径、相对路径🍌
绝对路径:
绝对路径也可称完整路径,是指向文件系统中某个固定位置的路径,不会因当前的工作目录而产生变化。为做到这点,它必须包括根目录
绝对路径可以算是大多数人所能接触的一种路径方式,就算不接触编程,绝对路径只要使用计算机就时刻存在。在安装软件时,能看到一个自定义安装路径的选项,这个就是绝对路径。
相对路径:
相对路径则是以指定的工作目录作为基点,避开提供完整的绝对路径。文件名称就可以被视为以指定工作目录为基点的一个相对路径(虽然一般不将其称之为路径)
两者进行对比:
不同操作系统与环境的 路径 格式字符可能都不一样,类Unix系统 对于目录分隔符是 /
,Microsoft Windows 系统对于目录的分隔符是 /
或 \
,这里我们已 Windows 系统为例,分别用两种形式的路径指向一个txt文件:
- 绝对路径:
"D:\这是一个txt文件.txt"
- 相对路径: 必须处于D盘目录下,
.\这是一个txt文件.txt
或是这是一个txt文件.txt
二、手动编写逻辑判断
在 一、什么是绝对路径、相对路径 内容中可知,绝对路径必须包含根目录,以此判断为基准,编写辅助函数:
1)、导入 re 正则标准库
import re
2)、判断是否包含根目标
根目录匹配正则表达式 "\d+:/?|\\?.*"
,将以此为基准判断是否为绝对路径
path = "D:\这是一个txt文件.txt"
print(bool(re.match(r"\d+:/?|\\?.*", path)))
3)、将其编写成辅助函数
def isabs_path(path):
if re.match(r"\d+:/?|\\?.*", path):
return True
return False
编写的函数或方法包含正则,若还未了解过正则表达式还请查阅相关资料
三、使用 OS 标准库判断「常用」
1) 、导入 os 标准库
import os
2)、判断是否为绝对路径函数
os.path.isabs(path)
如果 path 是一个绝对路径,则返回 True。
path = "D:\这是一个txt文件.txt"
print(os.path.isabs(path))
3)、编写辅助函数
def isabs_path(path: str):
"""
判断是否为绝对路径辅助函数
:param path: 文本类型路径
:return: True or False
"""
return os.path.isabs(path)
path = "D:\这是一个txt文件.txt"
print(isabs_path(path))
四、使用 pathlib 标准库判断「常用」
1) 、导入 pathlib 标准库
from pathlib import Path
2)、判断是否为绝对路径方法
path.is_absolute()
,返回此路径是否为绝对路径,如果路径同时拥有驱动器符与根路径(如果风格允许)则将被认作绝对路径
path = r"D:\这是一个txt文件.txt"
p_obj = Path(path)
print(p_obj.is_absolute())
3)、编写辅助函数
pathlib 库是面向对象的文件系统路径,在上面的示例中是实例化了一个路径对象并且调用了其的行为
大多数将路径写入字符串中,对于字符串来说并没有 is_absolute()
方法,那么编写辅助函数传入参数时有两种可能:
- 一是传入的纯字符串路径
- 二是传入的路径对象
对于可能是纯字符串路径可以有三种解决方式:🤔
-
判断传入的路径是否有隶属于
Path
类下def isabs_path(path): """ 判断是否为绝对路径辅助函数 :param path: 路径 :return: True or False """ if issubclass(type(path), Path): return path.is_absolute() return os.path.isabs(path)
-
判断传入的路径是否拥有
is_absolute
方法def is_absolute(path): """ 判断是否为绝对路径辅助函数 :param path: 路径 :return: True or False """ if hasattr(path, "is_absolute"): return getattr(path, "is_absolute")() return os.path.isabs(path)
-
直接实例化为 Path 对象
def is_absolute(path): """ 判断是否为绝对路径辅助函数 :param path: 路径 :return: True or False """ path = Path(path) return path.is_absolute()
最优解:😮
能看到最后,说明你也为此思考了很多,但对于是否为绝对路径的判断并没有这么复杂麻烦
实际上,os.path.isabs(path)
,在python 3.6后可以接受一个 path-like object
(类路径对象 ),也就是说即使传入的是路径对象那也能够被正常识别。再根据我们的使用场景和习惯一般对于路径的操作,要么用 os.path
标准库,要么用 pathlib
路径对象,那么对于判断是否为绝对路径最优解就只有这两个了👇
只需导入 pathlib 标准库即可
def is_absolute(path):
"""
判断是否为绝对路径辅助函数
:param path: 路径
:return: True or False
"""
path = Path(path)
return path.is_absolute()
只需导入 os 标准库即可
def isabs_path(path: str):
"""
判断是否为绝对路径辅助函数
:param path: 文本类型路径
:return: True or False
"""
return os.path.isabs(path)
参考资料💌
-
维基百科中文版:
-
官方手册: