Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как питоном загрузить ресурс из jar файла?

#python #jar #java #resources


Всем привет.
Я в python/jython новичок. 
Возникла проблема: надо загрузить файлы из определенного каталога.
Локально, никаких проблем
for name in glob.glob("%s/*.json" % some_path):
    log.debug(name)
    definition = json.loads(file(name).read())

Проблемма вот в чем: основная аппликация на java распространяется как jar(s), и все
ресурсы тоже сидят в jar'e.
Путь к папке ресурсов определяется в jave:
URL resourceURL = CommonMethods.class.getClassLoader().getResource(resourceName);
String resourcePath = resourceURL.getPath();
String dirPath = resourcePath.substring(0, resourcePath.lastIndexOf("/")+1);

Если ресурс в jar'e, то получаем
dirPath="file:/opt/lib/core-lib-1.0.jar!/rulz/"

И glob.glob() не работает, думаю, что file(name).read() тоже. :(
Подскажите, как читать файлы питоном из jar'a?    


Ответы

Ответ 1



А вот так не подойдет? def show_jar_classes(jar_file): """prints out .class files from jar_file""" zf = zipfile.ZipFile(jar_file, 'r') try: lst = zf.infolist() for zi in lst: fn = zi.filename if fn.endswith('.class'): print(fn) finally: zf.close() То есть действуем так как-будто jar эквивалентен zip (взял здесь).

Комментариев нет:

Отправить комментарий