Форум сайта python.su
0
#!/usr/bin/env python import sys if sys.argv[1] == '-h': print "Help" elif len(sys.argv) == 1: print "Need 2 arguments: input_dir and output_dir" elif len(sys.argv) > 3: print "Too many arguments"
Офлайн
103
#!/usr/bin/env python import sys if len(sys.argv) == 1: print "Need 2 arguments: input_dir and output_dir" elif len(sys.argv) > 3: print "Too many arguments" elif sys.argv[1] == '-h': print "Help"
Офлайн
0
terabayt
Почему перестановка if-ов чинит код?
Офлайн
103
l1nxпотому что вы сначала проверяете равен ли первый переданый аргумент “-h”, а потом проверяете на правильное количесвто аргументов
Почему перестановка if-ов чинит код?
Офлайн
0
Поправила код. Теперь так:
#!/usr/bin/env python import sys if len(sys.argv) == 2 and (sys.argv[1] == '-h' or sys.argv[1] == 'help'): print "Need 2 arguments: input_dir and output_dir" sys.exit() elif len(sys.argv)!= 3: print "Error: need 2 arguments: input_dir and output_dir" sys.exit()
Офлайн
103
sys.exit()
#!/usr/bin/env python import sys if len(sys.argv) == 2 and (sys.argv[1] == '-h' or sys.argv[1] == 'help'): print "Need 2 arguments: input_dir and output_dir" elif len(sys.argv)!= 3: print "Error: need 2 arguments: input_dir and output_dir"
Офлайн
0
terabaytт.е. если один из if-ов сработает то программа дальше не будет выполнятся?
sys.exit()
не обязательно
Офлайн
103
l1nxбудет
т.е. если один из if-ов сработает то программа дальше не будет выполнятся?
#!/usr/bin/env python import sys if len(sys.argv) == 2 and (sys.argv[1] == '-h' or sys.argv[1] == 'help'): exit("Need 2 arguments: input_dir and output_dir") elif len(sys.argv)!= 3: exit("Error: need 2 arguments: input_dir and output_dir")
Офлайн
857
terabaytФункция exit() не используется в скриптах.
можно стандартной функцией exit
Отредактировано py.user.next (Апрель 23, 2015 01:09:40)
Офлайн
103
py.user.nextэто я еще помню с документации по второму, НО
exit() не используется в скриптах
def setquit(): """Define new built-ins 'quit' and 'exit'. These are simply strings that display a hint on how to exit. """ if os.sep == ':': eof = 'Cmd-Q' elif os.sep == '\\': eof = 'Ctrl-Z plus Return' else: eof = 'Ctrl-D (i.e. EOF)' class Quitter(object): def __init__(self, name): self.name = name def __repr__(self): return 'Use %s() or %s to exit' % (self.name, eof) def __call__(self, code=None): # Shells like IDLE catch the SystemExit, but listen when their # stdin wrapper is closed. try: sys.stdin.close() except: pass raise SystemExit(code) builtins.quit = Quitter('quit') builtins.exit = Quitter('exit')
Офлайн