Python中获取当前目录和文件所在目录的方法

Python中获取当前目录和文件所在目录的方法

技术背景

在Python编程中,有时需要确定当前的工作目录(即运行Python脚本时所在的shell目录),以及正在执行的Python文件所在的目录。这在处理文件路径、导入模块等场景中非常有用。

实现步骤

获取当前工作目录

当前工作目录是指在shell中运行Python脚本时所在的目录。可以使用os模块的getcwd()函数来获取。

1
2
3
import os
cwd = os.getcwd()
print(cwd)

获取Python文件所在目录

使用os模块

可以结合os.path.dirname()os.path.realpath()函数来获取Python文件所在的目录。

1
2
3
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
print(dir_path)

需要注意的是,如果在代码中使用了os.chdir()改变了当前工作目录,上述方法可能会受到影响,因为__file__常量的值是相对于当前工作目录的,并且不会被os.chdir()调用改变。

使用pathlib模块(Python 3.4及以上)

pathlib模块提供了更面向对象的文件系统路径操作方式。

1
2
3
4
5
6
7
8
9
10
from pathlib import Path

# 获取当前工作目录
print(Path.cwd())

# 获取脚本文件的绝对路径
print(Path(__file__).resolve())

# 获取脚本所在目录
print(Path(__file__).resolve().parent)

核心代码

使用os模块获取当前工作目录和文件所在目录

1
2
3
4
5
6
7
8
9
import os

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

# 获取文件所在目录
file_dir = os.path.dirname(os.path.realpath(__file__))
print("文件所在目录:", file_dir)

使用pathlib模块获取当前工作目录和文件所在目录

1
2
3
4
5
6
7
8
9
10
11
12
13
from pathlib import Path

# 获取当前工作目录
current_working_dir = Path.cwd()
print("当前工作目录:", current_working_dir)

# 获取脚本文件的绝对路径
script_path = Path(__file__).resolve()
print("脚本文件的绝对路径:", script_path)

# 获取脚本所在目录
script_dir = Path(__file__).resolve().parent
print("脚本所在目录:", script_dir)

最佳实践

  • 跨平台兼容性:使用os.path模块或pathlib模块进行路径操作,它们可以处理不同操作系统的路径分隔符。
  • 避免硬编码路径:尽量使用相对路径或动态获取的路径,以提高代码的可移植性。
  • 异常处理:在处理文件路径时,要考虑可能出现的异常,如文件不存在、权限问题等。

常见问题

__file__ 常量在某些情况下不可用

当在IDE(如IDLE)中运行代码,或者使用python -c命令执行代码时,__file__常量可能未定义。可以使用os.path.realpath('./')os.getcwd()作为替代。

pathlib模块在旧版本Python中不可用

pathlib模块是在Python 3.4中引入的,如果使用的是Python 3.3及更早版本,可以使用pathlib2库。

在Jupyter Notebook中获取目录

在Jupyter Notebook中,__file__os.getcwd()可能无法按预期工作。可以使用os.path.realpath('.')来获取当前目录。


Python中获取当前目录和文件所在目录的方法
https://119291.xyz/posts/2025-04-14.python-get-current-and-file-directory/
作者
ww
发布于
2025年4月14日
许可协议