当前位置:首页 > Python > 正文

Python获取文件路径的5种方法 - 完整教程与代码示例

Python获取文件路径的5种方法

为什么需要获取文件路径?

在Python编程中,获取文件路径是常见需求,尤其在处理文件操作、数据加载和配置读取时。正确的文件路径处理能确保代码在不同环境下正常运行。

1. 获取当前脚本所在目录

使用os.path.dirname(__file__)获取当前Python脚本所在的目录路径:

import os

# 获取当前脚本的完整路径
script_path = os.path.abspath(__file__)
print("脚本完整路径:", script_path)

# 获取当前脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
print("脚本所在目录:", script_dir)

注意

在Jupyter Notebook中,__file__变量不可用,需要使用其他方法。

2. 获取当前工作目录

使用os.getcwd()获取当前工作目录:

import os

# 获取当前工作目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)

# 更改工作目录
os.chdir("/path/to/new/directory")
print("新工作目录:", os.getcwd())

工作目录 vs 脚本目录

工作目录是启动Python解释器的目录,而脚本目录是Python文件所在的目录,两者可能不同。

3. 使用pathlib模块(Python 3.4+)

pathlib提供了面向对象的路径操作方法:

from pathlib import Path

# 获取当前脚本路径
script_path = Path(__file__).resolve()
print("脚本完整路径:", script_path)

# 获取父目录
parent_dir = script_path.parent
print("父目录:", parent_dir)

# 路径拼接
config_path = parent_dir / "config" / "settings.ini"
print("配置文件路径:", config_path)

pathlib优点

  • 面向对象,更易读
  • 路径拼接使用/运算符
  • 跨平台兼容性好

常用方法

  • .parent:获取父目录
  • .name:获取文件名
  • .suffix:获取文件扩展名

4. 获取用户主目录

跨平台获取用户主目录的方法:

import os
from pathlib import Path

# 方法1: 使用os模块
home_dir_os = os.path.expanduser("~")
print("用户主目录(os):", home_dir_os)

# 方法2: 使用pathlib
home_dir_pathlib = Path.home()
print("用户主目录(pathlib):", home_dir_pathlib)

5. 处理相对路径和绝对路径

相对路径和绝对路径的转换方法:

import os
from pathlib import Path

relative_path = "../data/sample.csv"

# 转换为绝对路径
abs_path_os = os.path.abspath(relative_path)
print("绝对路径(os):", abs_path_os)

# 使用pathlib转换
abs_path_pathlib = Path(relative_path).resolve()
print("绝对路径(pathlib):", abs_path_pathlib)

# 获取相对路径
base_dir = "/projects/main"
rel_path = os.path.relpath("/projects/main/data/sample.csv", base_dir)
print("相对路径:", rel_path)

路径处理最佳实践

  • 在项目中使用绝对路径,避免路径错误
  • 使用os.path.join()或Path的/操作符拼接路径
  • 处理用户输入路径时,先转换为绝对路径

总结

在Python中获取文件路径有多种方法:

  1. 使用os.path模块处理路径(兼容旧版Python)
  2. 使用pathlib模块(Python 3.4+推荐)
  3. 区分脚本目录和工作目录
  4. 使用__file__获取当前脚本路径
  5. 使用Path.home()获取用户主目录

最佳实践:在新项目中使用pathlib模块,它提供了更直观、面向对象的路径操作方式。

发表评论