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 = сообщение об ошибке: указано из системы.линию (неправильно: хочу, чтобы это было отдельное сообщение об ошибке нет ввода имени файла)
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