Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有相对路径的包数据_Python_File_Path_Working Directory_Data Files - Fatal编程技术网

Python 具有相对路径的包数据

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__

我正在编写一个图形应用程序,它将依赖于一个语言文件,其中包含UI元素的不同语言的文本片段

我想将这些文件存储在包目录中的
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__)