我想实现一个小模块,从 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]