Python中获取当前目录和文件所在目录的方法
Python中获取当前目录和文件所在目录的方法
技术背景
在Python编程中,有时需要确定当前的工作目录(即运行Python脚本时所在的shell目录),以及正在执行的Python文件所在的目录。这在处理文件路径、导入模块等场景中非常有用。
实现步骤
获取当前工作目录
当前工作目录是指在shell中运行Python脚本时所在的目录。可以使用os模块的getcwd()函数来获取。
1 | |
获取Python文件所在目录
使用os模块
可以结合os.path.dirname()和os.path.realpath()函数来获取Python文件所在的目录。
1 | |
需要注意的是,如果在代码中使用了os.chdir()改变了当前工作目录,上述方法可能会受到影响,因为__file__常量的值是相对于当前工作目录的,并且不会被os.chdir()调用改变。
使用pathlib模块(Python 3.4及以上)
pathlib模块提供了更面向对象的文件系统路径操作方式。
1 | |
核心代码
使用os模块获取当前工作目录和文件所在目录
1 | |
使用pathlib模块获取当前工作目录和文件所在目录
1 | |
最佳实践
- 跨平台兼容性:使用
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/python-get-current-and-file-directory/