当前位置: 首页>>代码示例>>Python>>正文


Python ZipFile.decode方法代码示例

本文整理汇总了Python中zipfile.ZipFile.decode方法的典型用法代码示例。如果您正苦于以下问题:Python ZipFile.decode方法的具体用法?Python ZipFile.decode怎么用?Python ZipFile.decode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在zipfile.ZipFile的用法示例。


在下文中一共展示了ZipFile.decode方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: fetch_application

# 需要导入模块: from zipfile import ZipFile [as 别名]
# 或者: from zipfile.ZipFile import decode [as 别名]
def fetch_application(app_url, directory=None):
    domain, path = split_url(app_url)
    url = urlparse(app_url)
    metadata = {'origin': domain}
    manifest_filename = 'manifest.webapp'

    if url.scheme:
        print 'manifest: ' + app_url
        print 'fetching manifest...'
        manifest_url = urllib2.urlopen(app_url)
        manifest = json.loads(manifest_url.read().decode('utf-8-sig'))
        metadata['installOrigin'] = domain
        if 'etag' in manifest_url.headers:
            metadata['etag'] = manifest_url.headers['etag']
    else:
        print 'extract manifest from zip...'
        appzip = ZipFile(app_url, 'r').read('manifest.webapp')
        manifest = json.loads(appzip.decode('utf-8-sig'))

    appname = get_directory_name(manifest['name'])
    manifest["shortname"] = appname
    apppath = appname
    if directory is not None:
        apppath = os.path.join(directory, appname)

    if not os.path.exists(apppath):
        os.mkdir(apppath)

    if 'package_path' in manifest or not url.scheme:
        manifest_filename = 'update.webapp'
        filename = 'application.zip'
        metadata['origin'] = ''.join(['app://', appname])
        metadata['type'] = 'web'

        if url.scheme:
            print 'downloading app...'
            path = manifest['package_path']
            #urllib.urlretrieve(
            #    manifest['package_path'],
            #    filename=os.path.join(apppath, filename))
        filename='%s%s%s' % (appname, os.sep, filename)
            #filename=os.path.join(apppath, filename)
	    f = open(filename, "wb")
            f.write(urllib2.urlopen(path).read())
            f.close() 
	    #
            metadata['manifestURL'] = url.geturl()
            metadata['packageEtag'] = urllib2.urlopen(path).headers['etag']
        else:
            print 'copying app...'
            shutil.copyfile(app_url, '%s%s%s' % (appname, os.sep, filename))
            metadata['manifestURL'] = ''.join([domain, path, 'manifest.webapp'])

        manifest['package_path'] = ''.join(['/', filename])
开发者ID:tanying,项目名称:gaia-preload-app,代码行数:56,代码来源:preload.py

示例2: fetch_webapp

# 需要导入模块: from zipfile import ZipFile [as 别名]
# 或者: from zipfile.ZipFile import decode [as 别名]
def fetch_webapp(app_url, directory=None):
    """
    get webapp file and parse for preinstalled webapp

    output:

    [appname]/manifest.webapp
    [appname]/metadata.json
    [appname]/update.webapp (if package_path is defined)
    [appname]/cache/ (if appcache_path is defined)
    """
    domain, path = split_url(app_url)
    url = urlparse(app_url)
    metadata = {'origin': domain}
    manifest_filename = 'manifest.webapp'

    if url.scheme:
        logger.info('manifest: ' + app_url)
        logger.info('fetching manifest...')
        manifest_url = open_from_url(app_url)
        manifest = json.loads(manifest_url.read().decode('utf-8-sig'))
        metadata['installOrigin'] = 'https://marketplace.firefox.com'
        if 'etag' in manifest_url.headers:
            metadata['etag'] = manifest_url.headers['etag']
    else:
        logger.info('extract manifest from zip...')
        appzip = ZipFile(app_url, 'r').read('manifest.webapp')
        manifest = json.loads(appzip.decode('utf-8-sig'))

    appname = get_directory_name(manifest['name'])
    app_dir = appname
    if directory is not None:
        app_dir = os.path.join(directory, appname)

    if not os.path.exists(app_dir):
        os.mkdir(app_dir)

    if 'package_path' in manifest or not url.scheme:
        manifest_filename = 'update.webapp'
        filename = 'application.zip'
        metadata.pop('origin', None)

        if url.scheme:
            logger.info('downloading app...')
            path = manifest['package_path']
            retrieve_from_url(
                manifest['package_path'],
                os.path.join(app_dir, filename))
            metadata['manifestURL'] = url.geturl()

            package_url = open_from_url(path)
            if 'etag' in package_url.headers:
              metadata['packageEtag'] = package_url.headers['etag']
        else:
            logger.info('copying app...')
            shutil.copyfile(app_url, '%s%s%s' % (appname, os.sep, filename))
            metadata['manifestURL'] = ''.join(
                [domain, path, 'manifest.webapp'])

        manifest['package_path'] = ''.join(['/', filename])

    logger.info('fetching icons...')
    for key in manifest['icons']:
        manifest['icons'][key] = fetch_icon(
            key, manifest['icons'], domain, path, app_dir)

    if 'appcache_path' in manifest:
        metadata_info = [];
        logger.info('fetching appcache...',)
        appcache_manifest = get_appcache_manifest(
            domain, path, app_dir, manifest['appcache_path'])
        if not os.path.exists(appcache_manifest['local_dir']):
            os.makedirs(appcache_manifest['local_dir'])

        logger.info(' from ' + appcache_manifest['url'])
        logger.info(' save to ' + appcache_manifest['local_path'],)
        ( _filename, headerAC ) = retrieve_from_url(appcache_manifest['url'],
                                                    appcache_manifest['local_path'])
        lines = []
        with open(appcache_manifest['local_path']) as fd:
            lines = fd.readlines()

        (lines, headers) = fetch_appcache(domain, appcache_manifest['remote_dir'],
                                          appcache_manifest['local_dir'], lines)
        with open(appcache_manifest['local_path'], 'w') as fd:
            logger.info('overwrite new appcache')
            lines.append('')
            fd.write('\n'.join(lines))
        with open(appcache_manifest['local_dir'] + '../resources_metadata.json', 'w') as resources:
            resources.write('{\n');
            headers.append(format_resource_metadata(appcache_manifest['local_path'], headerAC))
            resources.write(',\n'.join(headers))
            resources.write('\n}\n');

    # add manifestURL for update
    metadata['manifestURL'] = app_url
    metadata['external'] = True

    f = file(os.path.join(app_dir, 'metadata.json'), 'w')
    f.write(json.dumps(metadata))
#.........这里部分代码省略.........
开发者ID:Archaeopteryx,项目名称:gaia,代码行数:103,代码来源:preload.py

示例3: fetch_application

# 需要导入模块: from zipfile import ZipFile [as 别名]
# 或者: from zipfile.ZipFile import decode [as 别名]
def fetch_application(app_url, directory=None):
    origin = get_origin(app_url)
    url = urlparse(app_url)
    metadata = {'origin': origin}
    manifest_filename = 'manifest.webapp'

    if url.scheme:
        print 'manifest: ' + app_url
        print 'fetching manifest...'
        manifest_url = urllib.urlopen(app_url)
        manifest = json.loads(manifest_url.read().decode('utf-8-sig'))
    else:
        print 'extract manifest from zip...'
        appzip = ZipFile(app_url, 'r').read('manifest.webapp')
        manifest = json.loads(appzip.decode('utf-8-sig'))

    appname = get_directory_name(manifest['name'])
    manifest["shortname"] = appname
    apppath = appname
    if directory is not None:
        apppath = os.path.join(directory, appname)

    if not os.path.exists(apppath):
        os.mkdir(apppath)

    if 'package_path' in manifest or not url.scheme:
        manifest_filename = 'update.webapp'
        filename = 'application.zip'
        metadata['origin'] = 'app://%s/' % appname
        metadata['type'] = 'web'

        if url.scheme:
            print 'downloading app...'
            path = manifest['package_path']
            urllib.urlretrieve(
                manifest['package_path'],
                filename=os.path.join(apppath, filename))
            metadata['installOrigin'] = ''.join([url.scheme, '://', url.netloc])
            metadata['manifestURL'] = url.geturl()
            metadata['etag'] = manifest_url.headers['etag'][1:-1]
            metadata['packageEtag'] = urllib.urlopen(path).headers['etag'][1:-1]
        else:
            print 'copying app...'
            shutil.copyfile(app_url, '%s%s%s' % (appname, os.sep, filename))
            metadata['manifestURL'] = ''.join([metadata['origin'],
                                              'manifest.webapp'])

        manifest['package_path'] = ''.join(['/', filename])
    else:
        print 'fetching icons...'
        for key in manifest['icons']:
            iconurl = get_absolute_url(urlparse(origin),
                                       urlparse(manifest['icons'][key]))
            image = urllib.urlopen(iconurl).read()
            manifest['icons'][key] = convert(image,
                                             mimetypes.guess_type(iconurl)[0])

    f = file(os.path.join(apppath, 'metadata.json'), 'w')
    f.write(json.dumps(metadata))
    f.close()

    f = codecs.open(os.path.join(apppath, manifest_filename), 'w', 'utf-8')
    f.write(json.dumps(manifest, ensure_ascii=False))
    return manifest
开发者ID:fzzzy,项目名称:gaia-preload-app,代码行数:66,代码来源:preload.py


注:本文中的zipfile.ZipFile.decode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。