python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python文件路径操作

一文讲清Python中文件路径的基本概念与操作方法

作者:卷心菜狗

这篇文章主要为大家详细介绍了Python中文件路径的基本概念与操作方法,其中文件路径主要分为绝对路径(从根目录开始)和相对路径(相对于当前工作目录),感兴趣的小伙伴可以了解下

一、文件路径概述

1. 什么是文件路径

文件路径是用于定位文件或文件夹在计算机中存储位置的“地址”,就像现实生活中的“家庭住址”一样,通过它操作系统才能找到对应的文件。

2. 为什么要学习文件路径

在 Python 中,无论是读取文件(如 open('data.txt'))、保存数据,还是导入自定义模块,都需要通过文件路径来定位目标。路径写错会直接导致 FileNotFoundError(文件找不到错误),因此掌握路径是 Python 编程的基础技能。

二、路径的分类:绝对路径 vs 相对路径

1. 绝对路径

定义:从文件系统的“根目录”开始,完整描述文件位置的路径。无论当前在哪个目录下,绝对路径都能唯一确定文件位置。

不同系统的绝对路径格式:

Windows 系统:以盘符开头(如 C:D:),用反斜杠 \ 分隔目录(Python 中也可以用正斜杠 / 避免转义问题)。

示例:C:\Users\张三\Desktop\project\data.txtC:/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.txtdata.txt 或 ./data.txt直接写文件名(或加 ./)
引用 code 目录下的 script.pycode/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 会被当成转义符)

正确写法:

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中文件路径的基本概念与操作方法的文章就介绍到这了,更多相关Python文件路径操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文