我的PYTHONPATH上有一些XML文件我希望使用PYTHONPATH上的路径加载,而不是文件系统上的(相对或绝对)路径。我可以简单地将它们作为Python模块中的字符串内联(yay multiline string literals),然后使用常规import
语句加载它们,但是如果可能的话,我想将它们作为常规XML文件分开。在Java世界中,解决方法是使用Class.getResource方法,我想知道Python中是否存在类似的东西。
答案 0 :(得分:8)
看一下pkg_resources,它包含了包含在通用资源中的api。它被认为可以与蟒蛇蛋一起使用,因此它可能是您需要的更多。
只是从文档中取得的一个例子:
import pkg_resources
my_data = pkg_resources.resource_string(__name__, "foo.dat")
答案 1 :(得分:6)
我不知道内置任何内容,但是下面的内容应该模仿行为(假设文件在本地磁盘上 - 我不相信PYTHONPATH支持非本地文件路径,而Java类路径可以包含远程资源的URL。)
def get_pypath_resource(resource_name):
for path in sys.path:
if os.path.exists(os.path.join(path, resource_name)):
return os.path.join(path, resource_name)
raise Exception('Resource %s could not be found' % resource_name)