Я в тупике. Я пытаюсь передать аргументы в Linux для выполнения определенных операций. Я хочу, чтобы пользователь не вводил слишком много параметров.Python getopt too many arguments
Например желаемый ход сценария будет как таковой:
./audit.py -a
Я хочу, чтобы предотвратить следующее:
./audit.py -af
Это, кажется, работает все, что указано на «а» а затем «f». В этом случае, если это похоже на «-af», тогда мне нужно, чтобы он завершил работу с помощью sys.exit(). Мой Len (sys.argv [1:]) всегда дает результат 1 независимо от того, как параметры, которые я поставил в
import getopts
import sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'v:adfh')
except getopt.GetoptError as err:
sys.exit(str(err))
if len(sys.argv[1:]) != 1:
sys.exit('Invalid')
for o,a in opts:
if o in ('-v', '--volume'):
print 'Volumes'
elif len(sys.argv[2:]) != 0:
sys.exit('Too many arguments')
elif o in ('-a', '--agent'):
print 'Full audit of agents only'
elif o in ('-d', '--device'):
print 'Full audit of device only'
elif o in ('-f', '--full'):
print 'Full audit of device/agents'
elif o in ('-h', '--help'):
sys.exit('Help Section')
if __name__ == '__main__':
main()
Если вы хотите проверить, сколько опций было указано, почему бы не проверить 'opts'? – user2357112
Только для моего понимания: почему вы не хотите препятствовать кластеризации опций? –