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

Written by

in

文章目录
  • 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获取脚本路径内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 使用Arcgis做路径规划方式(使用python脚本调用) Python脚本修改Maya ASCII文件路径方法实现 找Python安装目录,设置环境路径以及在命令行运行python脚本实例 Python获取当前脚本文件夹(Script)的绝对路径方法代码 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获取脚本路径内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 使用Arcgis做路径规划方式(使用python脚本调用)
    • Python脚本修改Maya ASCII文件路径方法实现
    • 找Python安装目录,设置环境路径以及在命令行运行python脚本实例
    • Python获取当前脚本文件夹(Script)的绝对路径方法代码
    • python环境路径配置以及命令行运行脚本

    站内搜索