读取 Python 包中的文件可能具有挑战性,尤其是在访问静态文件时不是代码本身的一部分。本文探讨了实现此目的的两种方法:使用 pkg_resources 模块和较新的 importlib.resources 模块。
setuptools 发行版中的 pkg_resources 模块是传统的访问包内资源的方法。但是,它的性能不如新方法。
import pkg_resources # Resource package and path resource_package = __name__ resource_path = '/'.join(('templates', 'temp_file')) # Get the resource as a string or stream template = pkg_resources.resource_string(resource_package, resource_path) # or template = pkg_resources.resource_stream(resource_package, resource_path)
对于 Python 版本 3.7 及更高版本,importlib.resources 模块提供更高效、直观的资源访问方式。
from importlib import resources # Resource package (must be a package) resource_package = __name__ + '.templates' # Get the resource as a file object (or stream) inp_file = resources.files(resource_package) / 'temp_file' with inp_file.open("rt") as f: template = f.read()
importlib.resources 方法比 pkg_resources 快得多。此外,它更安全、更直观,因为它依赖于 Python 包而不是路径字符串。对于低于 3.7 的 Python 版本,可以使用向后移植的 importlib.resources 库。
以上是如何高效读取 Python 包中的静态文件?的详细内容。更多信息请关注PHP中文网其他相关文章!