引数と文字列フォーマット
100個のXMLファイルを個別に処理するにしても、その度にソースコードを書き換えるのは面倒なので、引数で指定したい。
引数
引数にアクセスするにはsysをインポートして、配列sys.argvで参照する。
# coding: utf-8 import sys print(sys.argv)
argv.pyとして保存し、実行してみる。
$ python argv.py ['argv.py'] $ python argv.py 1 20 300 abc ['argv.py', '1', '20', '300', 'abc']
と、こんな感じ。
$ python argv.py 5340 22 n
こんな感じに指定したい。(n=0〜99)
「5340と22はどうも分けておいた方がいいかな?」と思って。
文字列のフォーマット
渡された引数からディレクトリとファイル名を生成したい。
ファーマット指定の文字列に書き換えたい場所に{}を入れて、.format(…)で引数を渡す。 で、{}内に引数の順番とフォーマット形式も書ける。
# coding: utf-8 import sys GEO_DIR = "FG-GML-{0:04d}-{1:02d}-DEM5A" GEO_XML = "FG-GML-{0:04d}-{1:02d}-{2:02d}-DEM5A-20161001.xml" if len(sys.argv) < 4: print("argv_fmt.py area1 area2 subarea") exit(-1) area1 = int(sys.argv[1]) area2 = int(sys.argv[2]) subarea = int(sys.argv[3]) dir = GEO_DIR.format(area1, area2) fname = GEO_XML.format(area1, area2, subarea) print("dir=", dir) print("fname=", fname)
実行すると、こんな感じ。
$ python argv_fmt.py 5340 22 0 dir= FG-GML-5340-22-DEM5A fname= FG-GML-5340-22-00-DEM5A-20161001.xml
さて、これらをxmlparse.pyに組み込めばOK。