如何获取当前文件目录的完整路径

os.path VS pathlib

在python中我们使用路径,通常会想到os.path模块,

  • 01 获取当前文件路径
import os
'''获取当前文件路径'''
vlaue1 = os.path.dirname(__file__)
vlaue2 = os.getcwd()
print(vlaue1)
print(vlaue2)

import pathlib
'''获取当前文件路径'''
vlaue1 = pathlib.Path.cwd()
print(vlaue1)
  • 02 获取上层/上层目录
import os
'''获取上层/上层目录'''
print(os.path.dirname(os.path.dirname(os.getcwd())))


import pathlib
'''获取上层/上层目录'''
print(pathlib.Path.cwd().parent.parent)


import pathlib
print(pathlib.Path.cwd().parent)
print(pathlib.Path.cwd().parent.parent.parent)
  • 03 路径拼接
import os
'''路径拼接'''
print(os.path.join(os.path.dirname(os.path.dirname(os.getcwd()))), "Personal", "Virtual Machines", "Debian", "9.5")


import pathlib
'''路径拼接'''
parts = ["Personal", "Virtual Machines", "Debian", "9.5"]
print(pathlib.Path.cwd().parent.parent.joinpath(*parts))
  • 04 路径的match
import pathlib
'''PurePath.match'''
print(pathlib.PurePath(__file__).match('*.py'))


import pathlib,os
''' pathlib.PurePath 后面能够跟着 match,那说明它应该是个对象,而不是一个路径字符串。'''
os_path = os.path.dirname(__file__)
pure_path = pathlib.PurePath(__file__)
print(os_path, type(os_path)) # 通过 os.path 获取当前路径的结果,得出一个路径字符串
print(pure_path, type(pure_path)) # 通过 pathlib.Pure 则获得的是一个 PurePosixPath或PureWindowsPath 对象
print(pathlib.PurePath(__file__).match('*.py'))

os.path模块的基本用法

'''基本用法'''
Path.iterdir()# 遍历目录的子目录或者文件
Path.is_dir()# 判断是否是目录
Path.glob()# 过滤目录(返回生成器)
Path.resolve()# 返回绝对路径
Path.exists()# 判断路径是否存在
Path.open()# 打开文件(支持with)
Path.unlink()# 删除文件或目录(目录非空触发异常)
'''基本属性'''
Path.parts# 分割路径 类似os.path.split(), 不过返回元组
Path.drive# 返回驱动器名称
Path.root# 返回路径的根目录
Path.anchor# 自动判断返回drive或root
Path.parents# 返回所有上级目录的列表
'''改变路径'''
Path.with_name()# 更改路径名称, 更改最后一级路径名
Path.with_suffix()# 更改路径后缀
'''拼接路径'''
Path.joinpath()# 拼接路径
Path.relative_to()# 计算相对路径
'''测试路径'''
Path.match()# 测试路径是否符合pattern
Path.is_dir()# 是否是文件
Path.is_absolute()# 是否是绝对路径
Path.is_reserved()# 是否是预留路径
Path.exists()# 判断路径是否真实存在
'''其他方法'''
Path.cwd()# 返回当前目录的路径对象
Path.home()# 返回当前用户的home路径对象
Path.stat()# 返回路径信息, 同os.stat()
Path.chmod()# 更改路径权限, 类似os.chmod()
Path.expanduser()# 展开~返回完整路径对象
Path.mkdir()# 创建目录
Path.rename()# 重命名路径
Path.rglob()# 递归遍历所有子目录的文件

pathlib 模块

This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which provide purely computational operations without I/O, and concrete paths, which inherit from pure paths but also provide I/O operations.

释义:pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。路径类在纯路径之间划分,纯路径提供纯粹的计算操作而没有I / O,以及具体路径,它继承纯路径但也提供I / O操作。


文章作者: &娴敲棋子&
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 &娴敲棋子& !
评论
  目录