Python相当于Java的Class.getResource

jbe*_*rd4 1 python java xml resources module

我在PYTHONPATH上有一些XML文件,我想用它们在PYTHONPATH上的路径加载,而不是它们在文件系统上的(相对或绝对)路径.我可以简单地将它们作为Python模块中的字符串内联(yay multiline string literals),然后使用常规import语句加载它们,但是如果可能的话,我想将它们作为常规XML文件分开.在Java世界中,解决方法是使用Class.getResource方法,我想知道Python中是否存在类似的东西.

mg.*_*mg. 8

看看pkg_resources,它包含了包含在通用资源中的apis.它被认为与蟒蛇蛋一起使用,因此它可能是您需要的更多.

只是从文档中取得的一个例子:

import pkg_resources
my_data = pkg_resources.resource_string(__name__, "foo.dat")
Run Code Online (Sandbox Code Playgroud)


ig0*_*774 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)
Run Code Online (Sandbox Code Playgroud)