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()
ちょっとのことでも自分で手を動かすのは難しく考えてしまいがち