1

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

我想将这些文件存储在lang/包目录中的一个目录中,该目录在执行时由主应用程序脚本导入。

但是,打开语言文件进行阅读时,我不能使用./,因为./是用户的工作目录,而不是导入的Python文件的位置。

具有看起来像的源结构

/
-- mypkg/
   -- lang/
      -- en_US.lang
      -- es_ES.lang
      -- <etc...>
   -- __init__.py
   -- lang.py
-- myapp (executable Python script which imports mypkg)

如何在lang/不依赖特定工作目录的情况下可靠地从目录中读取?

4

1 回答 1

3

您可以使用变量 - __file__- 它存储正在运行的脚本的路径。(这是在 中使用的路径python command),例如,如果您使用以下命令运行脚本 -

python /complete/path/to/script.py

__file__将包含'/complete/path/to/script.py'. 如果使用相对路径,它将包含 script 的相对路径。

使用它,您应该能够加载语言文件。

您还可以使用该函数 -os.path.abspath()获取脚本的绝对路径 -

import os.path
os.path.abspath(__file__)
于 2015-07-08T14:57:41.483 回答