当前位置:嗨网首页>书籍在线阅读

09-处理绝对路径和相对路径

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.1.7 处理绝对路径和相对路径

pathlib 模块提供了一些方法,用于检查给定路径是否为绝对路径,以及返回相对路径的绝对路径。

调用一个 Path 对象的 is_absolute() 方法,如果它代表绝对路径,则返回 True ;如果代表相对路径,则返回 False 。例如,使用你自己的文件和文件夹(而不是这里列出的具体文件和文件夹),在交互式环境中输入以下内容:

>>> Path.cwd()
WindowsPath('C:/Users/Al/AppData/Local/Programs/Python/Python37')
>>> Path.cwd().is_absolute()
True
>>> Path('spam/bacon/eggs').is_absolute()
False

要从相对路径获取绝对路径,可以将 Path.cwd()/ 放在相对 Path 对象的前面。毕竟,当我们说“相对路径”时,几乎总是指相对于当前工作目录的路径。在交互式环境中输入以下内容:

>>> Path('my/relative/path')
WindowsPath('my/relative/path')
>>> Path.cwd() / Path('my/relative/path') 
WindowsPath('C:/Users/Al/AppData/Local/Programs/Python/Python37/my/relative/ path')

如果你的相对路径是相对于当前工作目录之外的其他路径,那么只需将 Path.cwd() 替换为那个其他路径就可以了。以下示例使用主目录而不是当前工作目录来获取绝对路径:

>>> Path('my/relative/path')
WindowsPath('my/relative/path')
>>> Path.home() / Path('my/relative/path')
WindowsPath('C:/Users/Al/my/relative/path')

os.path 模块提供了一些有用的函数,它们与绝对路径和相对路径有关。

  • 调用 os.path.abspath(path) 将返回参数的绝对路径的字符串。这是将相对路径转换为绝对路径的简便方法。
  • 调用 os.path.isabs(path) ,如果参数是一个绝对路径,就返回 True ;如果参数是一个相对路径,就返回 False
  • 调用 os.path.relpath(path, start) 将返回从开始路径到 path 的相对路径的字符串。如果没有提供开始路径,就将当前工作目录作为开始路径。

在交互式环境中尝试使用以下函数:

>>> os.path.abspath('.')
'C:\\Users\\Al\\AppData\\Local\\Programs\\Python\\Python37'
>>> os.path.abspath('.\\Scripts')
'C:\\Users\\Al\\AppData\\Local\\Programs\\Python\\Python37\\Scripts'
>>> os.path.isabs('.')
False
>>> os.path.isabs(os.path.abspath('.'))
True

因为在调用 os.path.abspath() 时,当前目录是C:\Users\Al\AppData\Local\ Programs\Python\ Python37,所以“点”文件夹指的是绝对路径'C:\Users\Al\AppData\ Local\Programs\Python\ Python37'。

在交互式环境中,输入以下代码对 os.path.relpath() 进行调用:

>>> os.path.relpath('C:\\Windows', 'C:\\')
'Windows'
>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
'..\\..\\Windows'

如果相对路径与该路径位于同一父文件夹中,但位于其他路径的子文件夹中,例如 'C:\\Windows''C:\\spam\eggs' ,就可以用“点点”表示法返回到父文件夹。