This question already has answers here:
Way to access resource files in python
(3个答案)
6年前关闭。
在Java中,如果我想读取一个包含算法资源资源的文件,该怎么做,以便正确引用该路径。
澄清度
我试图了解在Python世界中如何将数据和代码打包到模块中。
例如,我可能正在编写一些查看字符串的代码,并试图对编写文本所用的语言进行分类。为此,我需要一个包含有关语言模型数据的文件。
因此,当我的代码被调用时,我想加载与模块一起打包的一个或多个文件。我不清楚如何在Python中做到这一点。
TIA。
从包中获取资源。
这是PEP 302加载程序get_data()API的包装。包装
参数应该是包的名称,采用标准模块格式
(foo.bar)。资源参数应采用相对形式
文件名,使用/作为路径分隔符。父目录名称..
不允许,也不是根名称(以/开头)。
该函数返回一个二进制字符串,该字符串是
指定资源。
对于位于文件系统中的软件包,已经
导入的,这大致相当于:
如果包装不能
找到或加载,或者使用不支持的PEP 302加载程序
get_data(),然后返回None。
(3个答案)
6年前关闭。
在Java中,如果我想读取一个包含算法资源资源的文件,该怎么做,以便正确引用该路径。
澄清度
我试图了解在Python世界中如何将数据和代码打包到模块中。
例如,我可能正在编写一些查看字符串的代码,并试图对编写文本所用的语言进行分类。为此,我需要一个包含有关语言模型数据的文件。
因此,当我的代码被调用时,我想加载与模块一起打包的一个或多个文件。我不清楚如何在Python中做到这一点。
TIA。
最佳答案
我认为您可能正在寻找pkgutil.get_data()
。这个文档说:
pkgutil.get_data(package, resource)
从包中获取资源。
这是PEP 302加载程序get_data()API的包装。包装
参数应该是包的名称,采用标准模块格式
(foo.bar)。资源参数应采用相对形式
文件名,使用/作为路径分隔符。父目录名称..
不允许,也不是根名称(以/开头)。
该函数返回一个二进制字符串,该字符串是
指定资源。
对于位于文件系统中的软件包,已经
导入的,这大致相当于:
d = os.path.dirname(sys.modules[package].__file__)
data = open(os.path.join(d, resource), 'rb').read()
如果包装不能
找到或加载,或者使用不支持的PEP 302加载程序
get_data(),然后返回None。