2016-02-18 2 views
0

Я новичок в python. Все еще мои ноги мокрые. Я пытаюсь сделать что-то вроде этого:Проверка количества аргументов командной строки в python

import sys 

if ((len(sys.argv) < 3 or < len(sys.argv > 3)): 
    print """\ 
This script will compare two files for something 
and print out matches 

Usage: theScript firstfile secondfile 
""" 
    return 

Я хочу сделать это в начале сценария, чтобы проверить правильность количества аргументов. Проблема в том, что «возврат» здесь не работает. Я мог бы сделать какое-то большое, если тогда заявление, я полагаю, но надеялся, что этого не сделать. Не уверен, есть ли более простой способ. Есть идеи?

+2

Вы пробовали sys.exit (0) – UglyCode

+0

Я предполагаю, что вы обертываете «if \ __ name__ == '\ __ main__': ...», правильно? В противном случае у вас будет плохое время. Выход хороший. Или только делать вещи, если хорошее состояние удовлетворено ... –

+0

@UglyCode: Я не думаю, что он должен вернуть статус выхода, указывающий на успех. По-видимому, его сценарий используется неправильно, поэтому он должен возвращать ненулевой статус выхода. – zondo

ответ

1

Используйте sys.exit() для выхода из сценария.

import sys 

if ((len(sys.argv) < 3 or len(sys.argv > 3)): ## also removed extra `<` 
    print """\ 
This script will compare two files for something 
and print out matches 

Usage: theScript firstfile secondfile 
""" 
    sys.exit(0) 
+1

Программа выходит из-за ошибки; вы должны, вероятно, использовать 'sys.exit (1)'. – zondo

+1

Это своего рода философский момент, имхо. Ввод неправильного количества аргументов не является репрезентативным для отказа кода или сбоя системы. Но если вы хотите вернуть код ошибки '1', вы можете. :) – gariepy

+0

Все, спасибо. Вы все здоровы. Попробуем «sys.exit (1)». Я не уверен, что «если \ _ \ _ name \ _ \ _ == '\ _ \ _ main \ _ \ _" .... "означает? Имя \ _ \ _ name \ _ \ _ имени скрипта? Благодарю. – mdmenard

2

sys имеет функцию под названием exit:

sys.exit(1) 

, вероятно, что вы хотите. Использование 1 сообщает программе, вызывающей вашу программу, что произошла ошибка. Вероятно, вам стоит подумать о том, чтобы написать ошибку sys.stderr.

+0

Все, спасибо. Попробуем sys.exit (1). – mdmenard

Смежные вопросы