使用Python实现获取当前脚本目录路径

 更新时间:2025年11月23日 10:39:16   作者:Redmi人儿  
这篇文章主要为大家详细介绍了如何使用Python实现获取当前脚本目录的绝对路径,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

这段Python代码的作用是获取当前Python脚本文件所在目录的绝对路径

让我详细解释一下:

代码分解

current_dir = os.path.dirname(os.path.abspath(__file__))
  • __file__ - 当前执行脚本的文件名(包含路径)
  • os.path.abspath(__file__) - 将相对路径转换为绝对路径
  • os.path.dirname() - 获取路径的目录部分(去掉文件名)
  • current_dir - 最终得到当前脚本所在的目录绝对路径

示例说明

假设你的脚本位于:/home/user/projects/my_script.py

import os

print(__file__)  # 可能是: "my_script.py" 或 "./my_script.py"
print(os.path.abspath(__file__))  # "/home/user/projects/my_script.py"
print(os.path.dirname(os.path.abspath(__file__)))  # "/home/user/projects"

类似的特殊变量(魔术变量)

除了 __file__,Python还有以下常见的特殊变量:

变量名说明
__name__当前模块名,如果是主程序则为 "__main__"
__doc__模块的文档字符串
__package__包名
__spec__模块规范
__annotations__变量注解
__dict__模块或对象的属性字典
__class__实例所属的类
__module__类定义的模块名

实际应用场景

import os

# 获取当前脚本所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))

# 基于当前目录构建其他路径
config_path = os.path.join(current_dir, "config.json")
data_dir = os.path.join(current_dir, "data")

# 这样无论脚本在哪里被执行,都能正确找到相关文件
with open(config_path, 'r') as f:
    config = json.load(f)

这种写法特别有用,因为它不依赖于当前工作目录,无论从哪里调用脚本,都能准确定位到脚本文件所在的位置。

知识扩展

python这样代码是什么用current_dir = os.path.dirname(os.path.abspath(file))

另外__file__是什么意思?除了__file__还有哪些其他类似的宏吗?

这段代码的作用是获取当前Python脚本文件所在目录的绝对路径。

具体分解:

__file__ 是当前执行脚本的相对路径(注意:在某些交互式环境中可能没有定义)。

例如,如果脚本位于 “/home/user/example.py”,那么在该脚本中打印 file 可能会得到 “example.py”(相对路径)或绝对路径,这取决于如何运行脚本。
但是,当使用相对路径运行脚本时,file 是相对路径,所以我们需要用 os.path.abspath 来将其转换为绝对路径。

os.path.abspath(file) 将 file 转换为绝对路径。这确保了无论当前工作目录是什么,我们都能得到脚本的完整路径。

os.path.dirname(path) 返回路径 path 的目录名。即去掉路径的最后一部分(通常是文件名),返回所在目录。

因此,current_dir = os.path.dirname(os.path.abspath(file)) 就得到了当前脚本所在目录的绝对路径。

举个例子:

假设脚本路径为 “/home/user/scripts/example.py”,那么:

file 可能是 “example.py” 或 “./example.py” 或绝对路径,但通常我们使用相对路径执行时是相对路径。

os.path.abspath(file) 将得到 “/home/user/scripts/example.py”(绝对路径)。

os.path.dirname(“/home/user/scripts/example.py”) 将得到 “/home/user/scripts”。

这样,current_dir 就被赋值为 “/home/user/scripts”。

关于 file 的补充:

在Python中,以双下划线开头和结尾的变量通常被称为“魔术变量”,它们由Python解释器定义。

file 就是其中一个,它表示当前模块(脚本)的文件路径。

除了 file,还有其他类似的魔术变量,例如:

  • name:当前模块的名称。如果当前模块是主程序,则 name 的值为 ‘main’,否则为模块名。
  • doc:模块的文档字符串,如果模块开头有字符串,则为该字符串,否则为None。
  • package:当前模块所在的包名。
  • loader:加载该模块的加载器对象。
  • spec:模块的规范,包含关于模块的导入信息。
  • cached:编译后的模块缓存文件路径。
  • builtins:内建函数和异常的集合。

此外,在类中还有:

  • class:当前实例对应的类。
  • module:当前实例所属的模块名。
  • dict:对象的属性字典。

在函数中:

  • defaults:函数的默认参数元组。
  • code:函数的代码对象。

等等。

这些魔术变量在Python中提供了关于当前环境、对象、函数等的信息。

到此这篇关于使用Python实现获取当前脚本目录路径的文章就介绍到这了,更多相关Python获取脚本路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单了解Python write writelines区别

    简单了解Python write writelines区别

    这篇文章主要介绍了简单了解Python write writelines区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python中的字典及其使用方法

    Python中的字典及其使用方法

    这篇文章主要介绍了Python中的字典及其使用方法,包括使用字典(添加、删除、修改等操作)、遍历字典以及字典与列表之间的嵌套使用具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录

    Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录

    MongoEngine是一个对象文档映射器(ODM),相当于一个基于SQL的对象关系映射器(ORM),下面这篇文章主要给大家介绍了关于Python利用ORM控制MongoDB(MongoEngine)的相关资料,需要的朋友可以参考下
    2018-09-09
  • django 控制页面跳转的例子

    django 控制页面跳转的例子

    今天小编就为大家分享一篇django 控制页面跳转的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例

    Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例

    这篇文章主要介绍了Python实现读取SQLServer数据并插入到MongoDB数据库的方法,涉及Python同时进行SQLServer与MongoDB数据库的连接、查询、读取、写入等相关操作实现技巧,需要的朋友可以参考下
    2018-06-06
  • python pandas实现excel转为html格式的方法

    python pandas实现excel转为html格式的方法

    今天小编就为大家分享一篇python pandas实现excel转为html格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python FastMCP构建MCP服务端与客户端的详细步骤

    Python FastMCP构建MCP服务端与客户端的详细步骤

    MCP(Multi-Client Protocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持 Streamable HTTP 传输协议的 MCP 服务端与客户端,需要的可以了解下
    2025-06-06
  • python列表数据增加和删除的具体实例

    python列表数据增加和删除的具体实例

    在本篇文章里小编给大家整理的是一篇关于python列表数据增加和删除的具体实例内容,有兴趣的朋友们可以学习下。
    2021-05-05
  • Python实现的txt文件去重功能示例

    Python实现的txt文件去重功能示例

    这篇文章主要介绍了Python实现的txt文件去重功能,涉及Python针对txt文本文件的读写、字符串遍历、判断相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Django REST framework 视图和路由详解

    Django REST framework 视图和路由详解

    这篇文章主要介绍了Django REST framework 视图和路由详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论