📅  最后修改于: 2023-12-03 15:11:52.009000             🧑  作者: Mango
在编写Python脚本时,我们难免会需要获取当前脚本所在的目录。这个需求在读取文件、导入第三方库等场景中尤为常见。
本文将介绍三种获取Python脚本所在目录的方法。
使用Python内置的os
模块,可以获取当前脚本所在目录的绝对路径。
import os
dir_path = os.path.dirname(os.path.abspath(__file__))
print(dir_path)
上述代码中,os.path.abspath(__file__)
可以获取当前脚本的绝对路径,os.path.dirname
可以获取该路径所在的目录名。
这种方法适用于Python脚本和模块文件。如果你在交互式环境中运行Python代码,上述方法将抛出异常。
使用Python内置的sys
模块,可以获取Python解释器当前执行的主脚本文件的绝对路径。
import sys
dir_path = os.path.dirname(os.path.abspath(sys.argv[0]))
print(dir_path)
上述代码中,sys.argv[0]
可以获取当前执行的脚本的完整路径,os.path.abspath
可以获取该脚本的绝对路径,os.path.dirname
可以获取该路径所在的目录名。
这种方法适用于Python脚本和交互式环境。注意,如果你在交互式环境中使用上述代码获取目录,返回的可能是Python解释器的安装路径。
使用Python内置的inspect
模块,可以获取当前脚本所在目录的路径。
import inspect
dir_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
print(dir_path)
上述代码中,inspect.getfile(inspect.currentframe())
可以获取当前正在执行的代码所在的文件名,os.path.abspath
可以获取该文件的绝对路径,os.path.dirname
可以获取该路径所在的目录名。
这种方法适用于Python脚本和模块文件,但在交互式环境中运行时可能会抛出异常。
上述三种方法均可以用于获取当前Python脚本所在目录。其中,使用os
模块和sys
模块需要分别从绝对路径和执行的脚本中获取目录,使用inspect
模块则是直接从正在执行的代码中获取目录。在实际开发中,应根据具体场景选择适合的方法。
以上是本文的所有内容,希望对你有所帮助!