我正在尝试使用DataFlavor
从包中获取资源。
我已经仔细阅读了documentation for this API,上面写着
要使用
pkgutil.get_data
...。pkgutil.get_data(package, resource)
参数应为包的名称,以标准模块格式(package
)。foo.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是什么?
答案 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')