Jac*_* P. 8 package python-3.x
我正在尝试使用pkgutil.get_data从包中获取资源。我已经阅读了这个 API 的文档,其中说
要使用
pkgutil.get_data(package, resource)....package参数应该是包的名称,采用标准模块格式 (foo.bar)。参数resource应采用相对文件名的形式,使用 / 作为路径分隔符。
我对术语标准模块格式(foo.bar)的理解感到困惑。假设我们有下面的例子,我想获取资源collection_effects.csv,我该如何调用这个API?
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
...
Run Code Online (Sandbox Code Playgroud)
从文档中,我想我可以通过以下方式调用资源:
import pkgutil
res = pkg.util.get_data("sound.effects", "/cool_effects/collection_effects.csv")
Run Code Online (Sandbox Code Playgroud)
,但是,似乎下面使用也会返回一个字节码(从文档中,无法获取资源将返回None):
res = pkg.util.get_data("sound/effects", "/cool_effects/collection_effects.csv")
我对标准模块格式的含义感到困惑,以及调用此 API 的正确方法是什么?
小智 8
我认为这可以解决你的问题
import pkgutil
res = pkgutil.get_data('sound.effects', 'cool_effects/collection_effects.csv')
Run Code Online (Sandbox Code Playgroud)
标准模块格式意味着您使用的内容import,因此它需要__init__.py文件。例如,您可以将__init__.py文件添加到cool_effects文件夹,然后使用此代码,它应该可以工作
import pkgutil
res = pkgutil.get_data('sound.effects.cool_effects', 'collection_effects.csv')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10830 次 |
| 最近记录: |