Что означает этот код в отношении 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]
(при условии, что был передан хотя бы один аргумент).