Если вы не хотите использовать тире перед arg
и optional_argument
, это довольно странно из-за типичного поведения командной строки Unix, но я не понимаю, почему каждый ответ кажется вам верным есть , чтобы использовать тире.Избегать их довольно тривиально, на самом деле ...:
import sys
def before_and_after_doubledashes(args=sys.argv):
where_doubledashes = args.index('--') if '--' in args else len(args)
return args[:where_doubledashes], args[where_doubledashes+1:]
Это полностью игнорирует, начинаются ли аргументы с тире или нет, просто выделяет первое вхождение аргумента, которое в точности соответствует двойной тире (если есть)и возвращает кортеж из двух списков, один из всех аргументов, которые находятся перед этим двойным тире, если таковые имеются, один из всех аргументов, следующих за ним (пустой, если нет аргумента двойного тире).Вы можете назначить эти списки из вызова:
before, after = before_and_after_doubledashes()
, а затем обработать их так, как будете (проверить их длину, назначить переменные из их части и т. Д.).