PyCodeBattler β

Pythonista 達の熱き闘いが,

今,始まる...!!

[2015/03/06 01:06:12] 登録

名前

二階堂紅丸

ステータス

HP SP 攻撃力 集中力 防御力 素早さ
1280 47 106 40 12 7 3

必殺技

名前 タイプ レベル 消費 SP
アルマゲスト MultiAttackType 3 21
イシュタールの暁星 SingleAttackType 2 14
スカルパニッシュ RangeAttackType 1 11

コード

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# $Id: unzip.py,v 1.2 2011/05/01 14:44:59 atzm Exp $

import os
import sys
import errno
import zipfile
import pykf


def guess(s):
    code = pykf.guess(s)

    if code == pykf.ASCII:
        return 'ascii'
    elif code == pykf.EUC:
        return 'eucjp'
    elif code == pykf.SJIS:
        return 'sjis'
    elif code == pykf.UTF8:
        return 'utf8'
    elif code == pykf.JIS:
        return 'iso2022jp'

    raise RuntimeError('unknown encoding: %s' % s)


def makedirs(path):
    if not path:
        return

    try:
        os.makedirs(path)
    except OSError as err:
        if err.errno != errno.EEXIST:
            raise err


def unzip(f, e):
    print('Archive:  %s' % f)

    zf = zipfile.ZipFile(f, 'r')

    for orig in sorted(zf.namelist()):
        name = unicode(orig, guess(orig), 'replace').encode(e, 'replace')

        print('  inflating: %s' % name)
        makedirs(os.path.dirname(name))

        zfp = zf.open(orig)

        try:
            with open(name, 'wb') as fp:
                for data in zfp:
                    fp.write(data)
        except IOError as err:
            if err.errno != errno.EISDIR:
                raise err

        zfp.close()


def main():
    enc = sys.getfilesystemencoding()
    files = sys.argv[1:]

    if not files:
        raise SystemExit('Usage: %s ZIPFILE ...' % \
                         os.path.basename(sys.argv[0]))

    for f in files:
        unzip(f, enc)


if __name__ == '__main__':
    main()