sys.argv — это встроенная команда Python, в которой перечислены все аргументы командной строки. len(sys.argv) — это общая длина аргументов командной строки. sys.argv[0] — это программа, т. е. имя сценария.
|
1 2 3 4 |
import sys print('Number of arguments:', len(sys.argv), 'arguments.') print('Argument List:', str(sys.argv)) |
Теперь перейдите в свой инструмент командной строки, введите следующую команду с аргументами, за которыми следует пробел, нажмите Enter и посмотрите вывод.

Теперь проанализируйте вывод. Мы передали шесть аргументов и получили шесть аргументов в списке.
Как упоминалось выше, нашим первым аргументом всегда является имя скрипта, которое учитывается в числе аргументов. Таким образом, даже если вы не передаете скрипту никаких аргументов, переменная argv всегда содержит хотя бы один элемент — имя скрипта.
Аргументы в методе Python argv всегда анализируются как String. Вы должны быть осторожны, если вы ожидаете, что ваши входные данные будут иметь любой другой тип данных. Возможно, вам придется преобразовать их в соответствии с вашими требованиями.
Хранение аргументов командной строки
Вы можете хранить любые аргументы от запуска программы в переменных.
|
1 2 3 4 5 6 7 |
import sys print('Number of arguments:', len(sys.argv), 'arguments.') print('Argument List:', str(sys.argv)) data = sys.argv[2] print('The argument three is:', data) |
Запустите файл в командной строке и посмотрите результат.

Python argv[0] и Python argv[1]
Для каждого вызова Python sys.argv автоматически представляет собой список строк, представляющих аргументы(разделенные пробелами) в командной строке. Название происходит от соглашения языка C, в котором argv и argc представляют аргументы командной строки.
Вы можете создать сценарий, который печатает аргументы в том виде, в котором они представлены. Команда также печатает количество аргументов, используя функцию len() в списке.
|
1 2 3 4 |
from __future__ import print_function import sys print(sys.argv, len(sys.argv)) |
Выход
|
1 |
['app.py'] 1 |
Если вы вызовете этот скрипт app.py, вы можете использовать различные аргументы, чтобы посмотреть, что произойдет.
|
1 2 3 4 |
➜ pyt python3 app.py kl and kb ['app.py', 'kl', 'and', 'kb'] 4 ➜ pyt |
Как видите, аргументы командной строки включают имя сценария, но не имя интерпретатора.
В этом смысле Python рассматривает сценарий как исполняемый файл. Если вам нужно знать имя исполняемого файла (в данном случае Python), вы можете использовать файл sys.executable.
Из примеров видно, что можно получить аргументы, содержащие пробелы, если пользователь вызывает сценарий с аргументами, заключенными в кавычки, поэтому вы получаете список аргументов, предоставленных пользователем.
Теперь в вашем коде Python вы можете использовать этот список строк для ввода вашей программы.
Поскольку целые числа, отсчитываемые от нуля, индексируют списки, вы можете получить отдельные элементы, используя синтаксис list[0], например sys.argv[0] в качестве имени файла, а sys.argv[1], sys.argv[2] — другие параметры и далее.
Давайте получим имя скрипта.
|
1 2 3 4 5 |
from __future__ import print_function import sys script_name = sys.argv[0] print(script_name) |
Выход
|
1 2 3 4 |
➜ pyt python3 app.py kl and kb app.py ➜ pyt |
Python sys.argv[0] содержит имя файла.
Python sys.argv[1] содержит первый аргумент командной строки, переданный вашему сценарию.
