HDF5 ファイルからデータを読み込み、特定のデータ セットを選択し、サブセットごとに計算を行う小さなモジュールを実装したいと考えています。サブセットの選択に argparse オプションを使用することにしました。文字列を使用して手動で解析するよりも良い方法はありますか?
以下のコードは私が望むことを行うはずですが、あまりきれいではなく、「:-3」などの入力をまだ処理できません。もっと良い方法があるはずです!
ありがとう!
parser.add_argument('--filename', required=True,
help='the file to open')
parser.add_argument('--snapshots', default="-1", type=str,
help="select snapshots (default: %(default)s) ")
[...]
H5 = tables.openFile(filename)
snapshot = args.snapshots
maxval = len(H5.root.trajectory[:])
if snapshot ==":" or snapshot.lower() == "all":
snapshot = np.arange(maxval)
elif ':' in snapshot:
if snapshot.index(':') == 0:
snapshot = np.arange(int(snapshot[1:]))
elif snapshot.index(':') == len(snapshot) - 1:
snapshot = np.arange(int(snapshot[:-1]),maxval)
else:
from_to = snapshot.split(':')
snapshot = np.arange(int(from_to[0]), int(from_to[1]))
else:
snapshot = int(snapshot)
selected = H5.root.trajectory[snapshot]