Что означает этот код в отношении sys.args?

Что означает следующий фрагмент кода? Я не понимаю концепцию sys.argv. Я слышал, что это как-то связано с запросами командной строки, но мой словарный запас недостаточно хорош, чтобы это понять. Также вывод странный. Я не понимаю, как составляется список, как элементы попадают туда или откуда они берутся и что они значат. Это действительно смущает меня, так что помощь в понимании будет очень цениться. Пожалуйста, используйте термины beinner, чтобы я мог понять это.

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

2 ответа

Решение

Большинство программ принимают аргументы, чтобы изменить их поведение. например

grep some_string myfile.ext

Эта команда (в системах Unix) ищет 'some_string' в myfile.ext и печатает соответствующие строки на консоли.

Так что вопрос в том, как grep (программа, которая запускается), знаете, что искать, или какой файл искать? Ответ очевиден - эти аргументы передаются через командную строку. Вы также можете передавать аргументы из командной строки в свои программы на python:

python my_python_file.py argument1 argument2

В этом случае, если my_python_file.py было содержание в вашем вопросе, sys.argv будет содержать ['my_python_file.py', 'argument1', 'argument2']

И поэтому вы можете посмотреть в sys.argv и посмотреть 'argument1' там и ваш код принять определенные меры соответственно. Обратите внимание, что это довольно редко для анализа sys.argv от руки, если это не очень простой случай. Обычно вы бы использовали что-то вроде argparse проанализировать аргументы за вас и вернуть проанализированную информацию в гораздо более удобном для управления формате.

sys.argv это список stringс аргументами, когда Python скрипт был выполнен (т.е. >> python main.py arg1 arg2).

Обратите внимание, что первым аргументом всегда будет имя команды. Первый "фактический" аргумент находится в sys.argv[1] (при условии, что был передан хотя бы один аргумент).

Другие вопросы по тегам