PyCodeBattler β

Pythonista 達の熱き闘いが,

今,始まる...!!

[2015/03/06 01:07:13] 登録

名前

バイメイニャン

ステータス

HP SP 攻撃力 集中力 防御力 素早さ
1126 37 93 38 10 9 3

必殺技

名前 タイプ レベル 消費 SP
ビッグブレス RangeAttackType 1 9

コード

#!/usr/bin/env python
# $Id: rename-euc.py,v 1.2 2012/01/05 16:18:44 atzm Exp $

import os
import sys
import getopt
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 rename_one(dryrun, encoding, name, top='.'):
    ename = unicode(name, guess(name), 'replace').encode(encoding, 'replace')

    if name != ename:
        if dryrun:
            print(os.path.join(top, ename))
        else:
            cwd = os.getcwd()
            os.chdir(top)
            os.rename(name, ename)
            os.chdir(cwd)

    return ename


def rename_recurse(dryrun, encoding, path):
    for top, dirs, names in os.walk(path, topdown=False):
        for name in dirs + names:
            rename_one(dryrun, encoding, name, top=top)


def main():
    dryrun = False
    recurse = False
    encoding = 'eucjp'
    opts, args = getopt.getopt(sys.argv[1:], 'nre:')

    for opt, arg in opts:
        if opt == '-n':
            dryrun = True
        elif opt == '-r':
            recurse = True
        elif opt == '-e':
            encoding = arg

    for name in args:
        if os.path.isdir(name) and recurse:
            rename_recurse(dryrun, encoding, name)
        rename_one(dryrun, encoding, name)


if __name__ == '__main__':
    main()