Python: есть ли у него аргумент argc?



Я написал одну и ту же программу (открыть текстовый файл и отобразить содержимое) на C и c++. Теперь я делаю то же самое в Python (на машине Linux).



в программах на C я использовал код if (argc!=2) {//выход из программы}



вопрос: что используется в Python для проверки количества аргументов



#!/usr/bin/python
import sys
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("ERROR. Did you make a mistake in the spelling")
text = in_file.read()
print text
in_file.close()


выходной ток:



./наименования на языке Python.txt = отображает текстовый файл (правильно)
./python nam = сообщение об ошибке: указано из системы.линию (правильный)
./python = сообщение об ошибке: указано из системы.линию (неправильно: хочу, чтобы это было отдельное сообщение об ошибке нет ввода имени файла)

579   4  

4 ответов:

в python список знает свою длину, так что вы можете просто сделать len(sys.argv) получить количество элементов в argv.

Я часто использую быстрый N-грязный трюк, чтобы прочитать фиксированное количество аргументов из командной строки:

[filename] = sys.argv[1:]

in_file = open(filename)   # Don't need the "r"

это присвоит один аргумент filename и вызвать исключение, если нет точно одного аргумента.

вам лучше смотреть на argparse для разбора аргументов.

http://docs.python.org/dev/library/argparse.html

как раз делает его легким, никакая потребность сделать тяжелый подниматься самостоятельно.

dir(sys) говорит, что нет. len(sys.argv) работает, но в Python лучше просить прощения, чем разрешения, так

#!/usr/bin/python
import sys
try:
    in_file = open(sys.argv[1], "r")
except:
    sys.exit("ERROR. Can't read supplied filename.")
text = in_file.read()
print(text)
in_file.close()

работает отлично и короче.

если вы собираетесь выйти в любом случае, это было бы лучше:

#!/usr/bin/python
import sys
text = open(sys.argv[1], "r").read()
print(text)

я использую print() так что он работает в 2.7, а также Python 3.

Comments

    Ничего не найдено.