【问题标题】:Package data with relative path使用相对路径打包数据
【发布时间】:2015-09-26 13:49:04
【问题描述】:

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

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

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

源结构看起来像

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

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

【问题讨论】:

    标签: python file path working-directory data-files


    【解决方案1】:

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

    python /complete/path/to/script.py
    

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

    使用这个,你应该可以加载语言文件了。

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 2017-06-18
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      相关资源
      最近更新 更多