Ответ 1
В python список знает свою длину, поэтому вы можете просто сделать len(sys.argv)
, чтобы получить количество элементов в argv
.
Я написал ту же программу (открытый текстовый файл и содержимое отображения) в 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(неверно: хотите, чтобы это отдельное сообщение об ошибке, не содержащее ввода имени файла)
В 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.