一文讲清Python中文件路径的基本概念与操作方法
一、文件路径概述
1. 什么是文件路径
文件路径是用于定位文件或文件夹在计算机中存储位置的“地址”,就像现实生活中的“家庭住址”一样,通过它操作系统才能找到对应的文件。
2. 为什么要学习文件路径
在 Python 中,无论是读取文件(如 open('data.txt'))、保存数据,还是导入自定义模块,都需要通过文件路径来定位目标。路径写错会直接导致 FileNotFoundError(文件找不到错误),因此掌握路径是 Python 编程的基础技能。
二、路径的分类:绝对路径 vs 相对路径
1. 绝对路径
定义:从文件系统的“根目录”开始,完整描述文件位置的路径。无论当前在哪个目录下,绝对路径都能唯一确定文件位置。
不同系统的绝对路径格式:
Windows 系统:以盘符开头(如 C:、D:),用反斜杠 \ 分隔目录(Python 中也可以用正斜杠 / 避免转义问题)。
示例:C:\Users\张三\Desktop\project\data.txt 或 C:/Users/张三/Desktop/project/data.txt
Linux / macOS 系统:以正斜杠 /(根目录)开头,用正斜杠 / 分隔目录。
示例:/Users/张三/Desktop/project/data.txt
2. 相对路径
定义:相对于当前工作目录(Current Working Directory, CWD)的路径。简单说,就是“以当前位置为起点,去找目标文件”。
相对路径的核心符号:
| 符号 | 含义 | 说明 |
| . | 当前目录 | 可省略(如 ./data.txt 等价于 data.txt) |
| .. | 上一级目录 | 表示回到当前目录的父目录 |
| / | 路径分隔符 | Windows 用 \ 或 /,Linux/macOS 用 / |
常见相对路径写法示例:
假设当前工作目录是 project,目录结构如下:
C:\Users\张三\Desktop\
└── project/ # 当前工作目录(CWD)
├── code/
│ └── script.py
├── data.txt # 目标文件1
└── docs/
└── note.txt # 目标文件2
└── photo.jpg # 目标文件3(上上级目录)
| 场景 | 相对路径写法 | 说明 |
| 引用当前目录的 data.txt | data.txt 或 ./data.txt | 直接写文件名(或加 ./) |
| 引用 code 目录下的 script.py | code/script.py | 进入子目录 code,再找文件 |
| 引用上一级目录的 photo.jpg | ../photo.jpg | 先回到 Desktop(上一级),再找文件 |
| 引用上上级目录(假设CWD是 code) | ../../photo.jpg | 从 code → project → Desktop,再找文件 |
如下示例,data与01脚本文件(文件名尽量不要数字开头)同级别,在01脚本文件中引用同级data中的1.txt方式如下:

三、Python 中处理文件路径的常用方法
使用Pycharm软件进行路径查看:
右击文件点击CopyPath

点击后可查看文件的绝对路径和 项目根相对路径(相对于项目文件夹)

Python 提供了两种主流方式处理路径:传统的 os.path 模块和现代的 pathlib 模块(推荐新手优先学 pathlib,更简洁直观)。
1. 方法一:os.path模块(传统方法)
os 是 Python 内置的系统交互模块,os.path 专门用于处理路径。
常用函数:
| 函数 | 功能说明 | 示例 |
| os.getcwd() | 获取当前工作目录的绝对路径 | print(os.getcwd()) → C:\project |
| os.path.join() | 智能拼接路径(自动适配系统分隔符) | os.path.join('code', 'script.py') → code/script.py |
| os.path.abspath() | 将相对路径转换为绝对路径 | os.path.abspath('data.txt') → C:\project\data.txt |
| os.path.exists() | 判断路径是否存在(文件或文件夹都可) | os.path.exists('data.txt') → True/False |
| os.path.isfile() | 判断是否为文件 | os.path.isfile('data.txt') → True |
| os.path.isdir() | 判断是否为文件夹 | os.path.isdir('code') → True |
代码示例(带详细注释):
import os # 导入 os 模块
# 1. 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir) # 输出类似: C:\Users\张三\Desktop\project
# 2. 拼接路径(推荐用这个,避免手动写分隔符出错)
# 比如要拼接 "code" 和 "script.py"
script_path = os.path.join(current_dir, "code", "script.py")
print("拼接后的路径:", script_path) # 输出: C:\Users\张三\Desktop\project\code\script.py
# 3. 判断文件是否存在
if os.path.exists(script_path):
print("文件存在!")
else:
print("文件不存在!")2. 方法二:pathlib模块(现代推荐,面向对象)(可学完面向对象后再进行回顾)
pathlib 是 Python 3.4+ 新增的模块,用面向对象的方式处理路径,代码更优雅,是目前官方推荐的方式。
核心类:Path
| 方法/属性 | 功能说明 | 示例 |
| Path.cwd() | 获取当前工作目录(等价于 os.getcwd()) | Path.cwd() → C:\project |
| Path.joinpath() | 拼接路径(也可以用 / 运算符) | Path('code') / 'script.py' → code/script.py |
| Path.resolve() | 转换为绝对路径(等价于 os.path.abspath()) | Path('data.txt').resolve() → C:\project\data.txt |
| Path.exists() | 判断路径是否存在 | Path('data.txt').exists() → True |
| Path.is_file() | 判断是否为文件 | Path('data.txt').is_file() → True |
| Path.is_dir() | 判断是否为文件夹 | Path('code').is_dir() → True |
| Path.parent | 获取上一级目录(等价于 ..) | Path('code/script.py').parent → code |
代码示例(带详细注释):
from pathlib import Path # 从 pathlib 导入 Path 类
# 1. 获取当前工作目录
current_dir = Path.cwd()
print("当前工作目录:", current_dir) # 输出类似: C:\Users\张三\Desktop\project
# 2. 拼接路径(推荐用 / 运算符,超简洁!)
# 方式一:用 joinpath()
script_path = current_dir.joinpath("code", "script.py")
# 方式二:用 / (更推荐,像写路径一样自然)
script_path = current_dir / "code" / "script.py"
print("拼接后的路径:", script_path) # 输出: C:\Users\张三\Desktop\project\code\script.py
# 3. 判断文件是否存在
if script_path.exists():
print("文件存在!")
else:
print("文件不存在!")
# 4. 获取上一级目录
parent_dir = current_dir.parent # 等价于 ../
print("上一级目录:", parent_dir) # 输出: C:\Users\张三\Desktop四、新手常见问题与注意事项
1. 路径分隔符的“坑”
Windows 默认用反斜杠 \,但在 Python 字符串中 \ 是转义字符(比如 \n 是换行),直接写会报错!
错误写法:open("C:\Users\data.txt")(\U 会被当成转义符)
正确写法:
- 用正斜杠
/:open("C:/Users/data.txt")(推荐,跨系统兼容) - 用双反斜杠
\\:open("C:\\Users\\data.txt") - 用原始字符串
r"":open(r"C:\Users\data.txt")(加r表示不转义)
2. 相对路径的“基准”:当前工作目录(CWD)
相对路径是相对于“当前工作目录”,而不是“脚本所在目录”!
比如你在 Desktop 目录下运行 project/code/script.py,此时 CWD 是 Desktop,不是 code。
如何获取“脚本所在目录”的绝对路径?
如果希望路径相对于脚本本身(无论在哪里运行都能找到文件),可以用以下方法:
1.用 pathlib(推荐):
from pathlib import Path
# 获取当前脚本的绝对路径,再取父目录(即脚本所在文件夹)
script_dir = Path(__file__).resolve().parent
print("脚本所在目录:", script_dir)(注:__file__ 是 Python 内置变量,表示当前脚本的文件名)
2.用 os.path:
import os
script_dir = os.path.dirname(os.path.abspath(__file__))
print("脚本所在目录:", script_dir)3. 文件名和路径中不要有中文?
不是不能有,但建议新手尽量用英文命名文件和文件夹,避免部分系统或旧版本 Python 出现编码问题。
五、总结
- 绝对路径:完整地址,从根目录开始,适合固定位置的文件;
- 相对路径:以当前目录为起点,用
.(当前)、..(上一级),适合项目内文件; - Python 处理路径:优先用
pathlib(面向对象,简洁),也可以用os.path(传统); - 避坑要点:注意分隔符转义、明确当前工作目录、尽量用英文命名。
到此这篇关于一文讲清Python中文件路径的基本概念与操作方法的文章就介绍到这了,更多相关Python文件路径操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用Python中的Argparse实现将列表作为命令行参数传递
Argparse 是一个 Python 库,用于以用户友好的方式解析命令行参数,本文我们将讨论如何使用 Python 中的 Argparse 库将列表作为命令行参数传递,感兴趣的可以了解下2023-08-08
解决pycharm无法删除invalid interpreter(无效解析器)的问题
这篇文章主要介绍了pycharm无法删除invalid interpreter(无效解析器)的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-07-07


最新评论