Подтвердить что ты не робот

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

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

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

Вопрос: что используется в 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 names.txt = Отображает текстовый файл (правильно) . /python nam = сообщение об ошибке: указано из строки sys.ext(правильно) . /python = сообщение об ошибке: указано в строке sys.ext(неверно: хотите, чтобы это отдельное сообщение об ошибке, не содержащее ввода имени файла)

4b9b3361

Ответ 1

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

Ответ 2

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

[filename] = sys.argv[1:]

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

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

Ответ 3

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

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

Просто успокаивается, вам не нужно делать тяжелый подъем.

Ответ 4

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.