2010-11-04 7 views
1

J'ai des fichiers XML sur mon PYTHONPATH que je voudrais charger en utilisant leur chemin sur le PYTHONPATH, plutôt que leur chemin (relatif ou absolu) sur le système de fichiers. Je pourrais simplement les aligner comme des chaînes dans un module Python (yay multilin littéraux de chaîne), puis les charger en utilisant une instruction régulière import, mais je voudrais les garder séparés en tant que fichiers XML réguliers, si possible. Dans le monde Java, la solution serait d'utiliser la méthode Class.getResource, et je me demande si quelque chose de similaire existe en Python.Python équivalent à Java Class.getResource

Répondre

8

Jetez un oeil à pkg_resources, il comprend apis pour l'inclusion des ressources génériques. Il est pensé pour travailler avec des oeufs de python et donc il pourrait être beaucoup plus de vous besoin.

Juste un exemple tiré de la doc:

import pkg_resources 
my_data = pkg_resources.resource_string(__name__, "foo.dat") 
6

Je ne connais pas quelque chose de intégré, mais quelque chose comme ce qui suit devrait émuler le comportement (en supposant que les fichiers sont sur un disque local - Je ne crois pas que PYTHONPATH supporte les chemins de fichiers non locaux, le classpath Java peut contenir des URL vers des ressources distantes).

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)