TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #4412 2.97K
argparse: зачем нужен и при чем здесь sys.argv[]?

При создании скриптов, которые запускаются из командной строки, часто возникает необходимость принимать аргументы. Чтобы эффективно разбирать и обрабатывать эти параметры, в стандартной библиотеке Python есть модуль argparse. В этом лонгриде мы покажем на примере, как его использовать, покажем взаимосвязь с sys.argv.


➡️ Какую роль играет sys.argv?

sys.argv — это список, содержащий аргументы командной строки, с которыми был запущен скрипт. Первый элемент списка sys.argv[0] — это имя самого скрипта.

Например, если вы вызовете скрипт так:


python script.py filename.txt -v


то выведется такой перечень:


import sys

print(sys.argv) # ['script.py', 'filename.txt', '-v']


Однако sys.argv — это просто список строк, и если работать с ним вручную, то придётся самостоятельно обрабатывать порядок, типы данных, проверять правильность и т.п., что может стать сложной задачей. Здесь на помощь приходит argparse. Он автоматизирует парсинг аргументов и предоставляет удобные способы проверки параметров CLI.


➡️ argparse: как с ним обращаться

argparse позволяет описать, какие параметры принимает ваш скрипт, какие из них обязательны, какие опциональны, какие могут быть флагами (включить / выключить). Он также автоматически генерирует справку и обрабатывает ошибки в вводе.

Часто бывает так, что скрипт требует передать обязательный параметр — имя файла. Это называется позиционным аргументом, так как его положение в командной строке имеет значение.


import argparse

# Создаём парсер
parser = argparse.ArgumentParser(description='Обработка файла.') # Создаем объект ArgumentParser;

# Добавляем позиционный аргумент 'filename'
parser.add_argument('filename', help='имя файла для обработки') # Добавляем описание каждого аргумента или опции

# Разбираем аргументы командной строки
args = parser.parse_args() # Разберём аргументы sys.argv

# Fргументы доступны как атрибуты: args.filename
print(f'Обрабатываем файл: {args.filename}')


Теперь, если запустить скрипт так:


python script.py example.txt


Программа выведет:


Обрабатываем файл: example.txt


Если попытаться запустить без аргумента:


python script.py


то argparse автоматически покажет сообщение об ошибке и краткую справку:


usage: script.py [-h] filename
script.py: error: the following arguments are required: filename


Документация
#основы
@zen_of_python
🙏 — Если спасибо за такой контент
  • 🙏 15
  • ❤ 1
More from @zen_of_python
  1. Sep 26, 2026Как собирать динамические фильтры Django через Q-объекты Q() представляет условие для SQL-…
  2. Sep 26, 2026Почему str.splitlines() видит больше переносов, чем чтение файла У Python два разных понят…
  3. Sep 26, 2026Как вручную разрешить ленивый импорт в Python У объекта, созданного через lazy import json…
  4. Sep 25, 2026Почему Python предупреждает о последовательности \477 и как это исправить В строках Python…
  5. Sep 25, 2026Как запускать Python-код в песочнице на MicroPython и WebAssembly В проектах Саймона Уилли…
  6. Sep 25, 2026Как emojet ускоряет работу с эмодзи в Python Библиотека emojet преобразует названия в эмод…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →