yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • python基础

    • python概述

    • python环境搭建

    • python基础语法

    • python关键字与标识符

    • python流程控制

    • python函数

    • python内置函数

    • python面向对象

    • python模块与包

    • python文件IO与OS

      • python绝对路径和相对路径
        • 1. Python绝对路径和相对路径
        • 链接资料
        • 什么是当前工作目录
        • 什么是绝对路径与相对路径
        • Python处理绝对路径和相对路径
      • python文件基本操作
      • python os
    • python异常处理机制

  • python高级

  • python模块

  • python设计模式

  • python数据结构与算法

  • django

  • django-DRF

  • flask

  • 自己设计开源pip包

  • 自己设计开源项目

  • python小示例

  • python面试题

  • python
  • python基础
  • python文件IO与OS
YiZhang-You
2023-05-17
目录
1. Python绝对路径和相对路径
链接资料
什么是当前工作目录
什么是绝对路径与相对路径
Python处理绝对路径和相对路径

python绝对路径和相对路径

# 1. Python绝对路径和相对路径

# 链接资料

  1. http://c.biancheng.net/python/file/
  2. https://docs.python.org/zh-cn/3/library/io.html
  3. https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p05_files_and_io.html

链接资料会更具完整

# 什么是当前工作目录

每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。

注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。

在 python 中,利用 os.getcwd() 函数可以取得当前工作路径的字符串,还可以利用 os.chdir() 改变它。例如,在交互式环境中输入以下代码:

>>> import os
>>> os.getcwd()
'C:\\\\Users\\\\mengma\\\\Desktop'
>>> os.chdir('C:\\\\Windows\\\\System32')
>>> os.getcwd()
'C:\\\\Windows\\\\System32'
1
2
3
4
5
6

可以看到,原本当前工作路径为 'C:\Users\mengma\Desktop'(也就是桌面),通过 os.chdir() 函数,将其改成了 'C:\Windows\System32'。

需要注意的是,如果使用 os.chdir() 修改的工作目录不存在,Python 解释器会报错,例如:

>>> os.chdir('C:\\\\error')
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    os.chdir('C:\\\\error')
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\\\error'
1
2
3
4
5

了解了当前工作目录的具体含义之后,接下来介绍绝对路径和相对路径各自的含义和用法。

# 什么是绝对路径与相对路径

明确一个文件所在的路径,有 2 种表示方式,分别是:

  • 绝对路径:总是从根文件夹开始,Window 系统中以盘符(C:、D:)作为根文件夹,而 OS X 或者 Linux 系统中以 / 作为根文件夹。
  • 相对路径:指的是文件相对于当前工作目录所在的位置。例如,当前工作目录为 "C:\Windows\System32",若文件 demo.txt 就位于这个 System32 文件夹下,则 demo.txt 的相对路径表示为 ".\demo.txt"(其中 .\ 就表示当前所在目录)。

在使用相对路径表示某文件所在的位置时,除了经常使用 .\ 表示当前所在目录之外,还会用到 ..\ 表示当前所在目录的父目录。

)

图 1 相对路径和绝对路径

以图 1 为例,如果当前工作目录设置为 C:\bacon,则这些文件夹和文件的相对路径和绝对路径,就对应为该图右侧所示的样子。

# Python处理绝对路径和相对路径

Python os.path 模块提供了一些函数,可以实现绝对路径和相对路径之间的转换,以及检查给定的路径是否为绝对路径,比如说:

  • 调用 os.path.abspath(path) 将返回 path 参数的绝对路径的字符串,这是将相对路径转换为绝对路径的简便方法。
  • 调用 os.path.isabs(path),如果参数是一个绝对路径,就返回 True,如果参数是一个相对路径,就返回 False。
  • 调用 os.path.relpath(path, start) 将返回从 start 路径到 path 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
  • 调用 os.path.dirname(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容;调用 os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容。

在交互式环境中尝试上面提到的函数:

>>> os.getcwd()
'C:\\\\Windows\\\\System32'
>>> os.path.abspath('.')
'C:\\\\Windows\\\\System32'
>>> os.path.abspath('.\\\\Scripts')
'C:\\\\Windows\\\\System32\\\\Scripts'
>>> os.path.isabs('.')
False
>>> os.path.isabs(os.path.abspath('.'))
True
>>> os.path.relpath('C:\\\\Windows', 'C:\\\\')
'Windows'
>>> os.path.relpath('C:\\\\Windows', 'C:\\\\spam\\\\eggs')
'..\\\\..\\\\Windows'
>>> path = 'C:\\\\Windows\\\\System32\\\\calc.exe'
>>> os.path.basename(path)
'calc.exe'
>>> os.path.dirname(path)
'C:\\\\Windows\\\\System32'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

注意,由于读者的系统文件和文件夹可能与我的不同,所以读者不必完全遵照本节的例子,根据自己的系统环境对本节代码做适当调整即可。

除此之外,如果同时需要一个路径的目录名称和基本名称,就可以调用 os.path.split() 获得这两个字符串的元组,例如:

>>> path = 'C:\\\\Windows\\\\System32\\\\calc.exe'
>>> os.path.split(path)
('C:\\\\Windows\\\\System32', 'calc.exe')
1
2
3

注意,可以调用 os.path.dirname()和 os.path.basename(),将它们的返回值放在一个元组中,从而得到同样的元组。但使用 os.path.split() 无疑是很好的快捷方式。

同时,如果提供的路径不存在,许多 Python 函数就会崩溃并报错,但好在 os.path 模块提供了以下函数用于检测给定的路径是否存在,以及它是文件还是文件夹:

  • 如果 path 参数所指的文件或文件夹存在,调用 os.path.exists(path) 将返回 True,否则返回 False。
  • 如果 path 参数存在,并且是一个文件,调用 os.path.isfile(path) 将返回 True,否则返回 False。
  • 如果 path 参数存在,并且是一个文件夹,调用 os.path.isdir(path) 将返回 True,否则返回 False。

下面是在交互式环境中尝试这些函数的结果:

编辑 (opens new window)
上次更新: 2023/05/17, 23:08:21
模块与包
python文件基本操作

← 模块与包 python文件基本操作→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2025 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式