python - 用相对路径打包数据

标签 python file path working-directory data-files

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

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

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

源结构看起来像

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

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

最佳答案

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

python /complete/path/to/script.py

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

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

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

import os.path
os.path.abspath(__file__)

关于python - 用相对路径打包数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31296262/

相关文章:

python - 在 Sphinx 扩展中获取源 .rst 文件路径

c - 两次写入文件的缓冲区

python - 路径钩子(Hook)的流行(PEP 302自定义导入)

java - neo4j java遍历返回多个路径而不是一个

python - PyQt5。对话框窗口不显示。改为关闭主窗口

python - 这个功能有问题吗?

Python:枚举

file - YII2 如何为文件类型添加自定义验证规则

c - 在 C 中,解析由多个空格分隔的整数组成的字符串

PHP parse_ini_file() - 它看起来在哪里?