2015-05-14 5 views
0

Я новичок в Python и создал скрипт, который при вызове будет отключать компьютер за считанные секунды, если он снова будет вызван, он добавит x секунд к завершению. Моя проблема в том, что когда я проверяю аргументы, вызываемые скриптом. Если я называю сценарий с «-s», которая будет выключена, она сначала вызывает функцию отключения, а затем переходит к идти в заявлении Элиф бесконечное число раз, пока я не выйти ...Сценарий Python 3.4 сохраняет одну и ту же функцию

if arg == '-s': 
    shutdown() 
elif arg == '-a': 
    abort() 
else: 
    sys.exit("Error: '%s' isn't a valid argument." % arg) 

Полный сценарий здесь: http://pastebin.com/VnxANLZ5, поскольку проблема может быть еще где. Также приветствуется другой ввод для создания сценария.

+1

Если вы используете несколько аргументов командной строки, рассмотрите возможность использования ['argparse'] (https://docs.python.org/3/library/argparse.html). – Evert

+0

сохранит это в виду, я не думаю, что это причина звонков функции цикла, хотя –

+0

Как вы можете сказать, что это «вхождение в утверждение elif бесконечное время»? Что печатается? Просто неограниченное количество «прервать»? Что-то другое? – Kevin

ответ

1

Если ваш скрипт называется shutdown.py, то вполне возможно, что выполнение os.system("shutdown -s -t %s" % timeToShutdown) или os.system("shutdown -a") заставит скрипт для выполнения себя, а не вызовом для Windows' встроенный shutdown команды.

Попробуйте переименовать свой скрипт на что-то другое, кроме shutdown.py.

+0

Да, это было, спасибо вам большое! Я думал, что он сможет их устранить, так как сценарий имеет расширение –

+0

Во второй мысли, возможно, вы должны сохранить имя сценария как есть, если вы измените свои 'системные' вызовы, чтобы они вызывали' shutdown.exe', а не просто 'shutdown'. Тогда ОС не нужно угадывать, имеете ли вы в виду скрипт Python или исполняемый файл. – Kevin

+0

В конце концов, имя действительно не имеет значения, я просто привязал его к своей клавиатуре, я все еще удивляюсь, что это смущает их, когда у сценария есть расширение, предположим, что это та же самая причина, по которой я могу вызвать завершение работы Windows без .exe расширение, а затем собственный каталог файла имеет приоритет –