せまい部屋

web/gameエンジニアのweblog

pythonでファイル内文字列置換

突如テンプレファイル内の特定文字列をファイル名で置き換える(40ファイルくらい)のやってという打診が来たので、まだまだ不慣れながらも背伸びしてPythonista気取ってみた

とどのつまり、

$ sed -i -e "s/MYCLASSNAME/ファイル名/g"  [ファイル].cs

をカレントの.csに対して行いたいんだけど量的に手動はナンセンスだ、と。

こんなかんじの書捨てスクリプトでお行儀も何もないと思うけど、個人的には出力ディレクトリafter作成してそっちに吐くっていうのはちょっとどうなのよ感満載だった。 けど動くものができないとしょうがないのでとりあえず書き書き。

import sys
import os

DEFAULT = 'MYCLASSNAME'

def main():
    path = sys.argv[1]
    for p in os.listdir(path):
        if '.cs' not in p:
            continue

        cls = p.split('.')[0]

        # 書き換え
        f_input = open(path + '/' + p)
        f_output = open('./after/' + p, 'w')

        for line in f_input:
            if line.find(DEFAULT) != 1:
                line = line.replace(DEFAULT, cls)
            f_output.write(line)

        f_input.close()
        f_output.close()

if __name__ == '__main__':
    main()

ちょっとのことでも自分で手を動かすのは難しく考えてしまいがち