Я хотел бы указать строку среза в качестве аргумента, см. Ниже
import argparse
def _parse_slice(s):
a = [int(e) if e.strip() else None for e in s.split(":")]
return slice(*a)
if __name__ == '__main__':
p = argparse.ArgumentParser()
p.add_argument('-s', type=_parse_slice)
args = p.parse_args()
print(args.s)
Хорошо работает с положительным индексом, например, -s 1:10
, -s -5
(что приводит к slice[None, -5, None]
) тоже хорошо, но ошибки с отрицательным индексом в качестве первого параметра, например, -5:
usage: slice-parse.py [-h] [-s S]
slice-parse.py: error: argument -s: expected one argument
Как мне поддержать отрицательный индекс в качестве первого параметра среза?