Python 具有相对路径的包数据
我正在编写一个图形应用程序,它将依赖于一个语言文件,其中包含UI元素的不同语言的文本片段 我想将这些文件存储在包目录中的Python 具有相对路径的包数据,python,file,path,working-directory,data-files,Python,File,Path,Working Directory,Data Files,我正在编写一个图形应用程序,它将依赖于一个语言文件,其中包含UI元素的不同语言的文本片段 我想将这些文件存储在包目录中的lang/目录中,该目录在执行时由主应用程序脚本导入 但是,在打开语言文件进行阅读时,我不能使用/,因为/是用户的工作目录,而不是导入的Python文件的位置 源结构如下所示 / -- mypkg/ -- lang/ -- en_US.lang -- es_ES.lang -- <etc...> -- __init__
lang/
目录中,该目录在执行时由主应用程序脚本导入
但是,在打开语言文件进行阅读时,我不能使用/
,因为/
是用户的工作目录,而不是导入的Python文件的位置
源结构如下所示
/
-- mypkg/
-- lang/
-- en_US.lang
-- es_ES.lang
-- <etc...>
-- __init__.py
-- lang.py
-- myapp (executable Python script which imports mypkg)
/
--mypkg/
--朗/
--恩尤斯朗
--伊苏·朗
--
--_uuuinit_uuuuu.py
--朗比
--myapp(导入mypkg的可执行Python脚本)
如何在不依赖特定工作目录的情况下可靠地读取
lang/
目录?您可以使用变量-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
-这存储正在运行的脚本的路径。(这是在python命令中使用的路径),例如,如果使用以下命令运行脚本-
python /complete/path/to/script.py
import os.path
os.path.abspath(__file__)
文件将包含'/complete/path/to/script.py'
。如果使用相对路径,它将包含脚本的相对路径
使用此选项,您应该能够加载语言文件
您还可以使用函数-os.path.abspath()
获取脚本的绝对路径-
python /complete/path/to/script.py
import os.path
os.path.abspath(__file__)