Python3 pkgutil get_data用法

时间:2018-10-01 21:17:11

标签: python-3.x package

我正在尝试使用DataFlavor从包中获取资源。 我已经仔细阅读了documentation for this API,上面写着

  

要使用pkgutil.get_data...。pkgutil.get_data(package, resource)参数应为包的名称,以标准模块格式(packagefoo.bar参数应采用相对文件名的形式,使用/作为路径分隔符。

我对理解标准模块格式(resource感到困惑。让我们说我们有下面的示例,我想获取资源foo.bar,如何调用此API?

collection_effects.csv

从文档中,我认为我可以通过以下方式调用资源:

sound/                                            Top-level package
  __init__.py                                     Initialize the sound package
  effects/                                        Subpackage for sound effects
          __init__.py
          echo.py
          reverse.py
          cool_effects/
                      collection_effects.csv
          ...

, 但是,使用下面的方法似乎还会返回一个字节码(从文档中,获取资源失败将返回import pkgutil res = pkg.util.get_data("sound.effects", "/cool_effects/collection_effects.csv") ):

None

我对标准模块格式的含义感到困惑,正确调用该API是什么?

1 个答案:

答案 0 :(得分:1)

我认为这可以解决您的问题

import pkgutil
res = pkgutil.get_data('sound.effects', 'cool_effects/collection_effects.csv')

标准模块格式意味着您使用import使用什么,因此它需要__init__.py文件。通过例如您可以将__init__.py文件添加到cool_effects文件夹中,然后使用此代码,它应该可以工作

import pkgutil
res = pkgutil.get_data('sound.effects.cool_effects', 'collection_effects.csv')