Как вызвать функцию Python из командной строки с аргументами?

Как вызвать функцию Python из командной строки с аргументами?

Введение

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

Основы работы с командной строкой

Командная строка предоставляет мощный и гибкий способ взаимодействия с операционной системой. В этой секции мы познакомим читателя с основами работы в командной строке и объясним, как Python может быть интегрирован в этот процесс.

Как запустить Python из командной строки

Сначала необходимо удостовериться, что интерпретатор Python установлен и доступен из командной строки. Для этого можно выполнить команду python --version или python3 --version, в зависимости от вашей системы и версии Python.

$ python --version
Python 3.9.1

Чтобы запустить Python из командной строки, достаточно ввести команду python или python3:

$ python
Python 3.9.1 (default, Dec  8 2020, 07:51:42)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Пути к скриптам и модулям

Обсудим, как указывать пути к скриптам и модулям, и как переименовывать файлы для удобства использования. Скрипты Python можно запускать непосредственно из командной строки, указывая путь к файлу:

$ python путь/к/вашему/скрипту.py

Также пути к модулям можно указать с помощью переменной окружения PYTHONPATH или параметра -m:

$ PYTHONPATH=путь/к/модулям python -m вашмодуль

Передача аргументов в функции

Теперь мы перейдем к тому, как передавать аргументы в функции, вызываемые из командной строки. Мы будем использовать модуль argparse для обработки аргументов.

import argparse

def greet(name: str) -> None:
    """Функция для приветствия пользователя по имени."""
    print(f'Привет, {name}!')

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Программа для приветствия пользователя.')
    parser.add_argument('name', type=str, help='Имя пользователя')
    args = parser.parse_args()
    greet(args.name)

Расширенные возможности работы с аргументами

В этой части статьи мы рассмотрим, как обрабатывать множественные аргументы, позиционные и аргументы с ключевыми словами, а также как выполнять валидацию данных аргументов.

import argparse

def add_numbers(a: float, b: float) -> float:
    """Функция для сложения двух чисел."""
    return a + b

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Программа для сложения двух чисел.')
    parser.add_argument('a', type=float, help='Первое число')
    parser.add_argument('b', type=float, help='Второе число')
    args = parser.parse_args()
    result = add_numbers(args.a, args.b)
    print(f'Результат: {result}')

Обработка ошибок и отладка

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

import argparse

class InvalidInputError(Exception):
    """Пользовательское исключение для неверного ввода."""

def divide(a: float, b: float) -> float:
    """Функция для деления двух чисел."""
    if b == 0:
        raise InvalidInputError('Деление на ноль недопустимо.')
    return a / b

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Программа для деления двух чисел.')
    parser.add_argument('a', type=float, help='Числитель')
    parser.add_argument('b', type=float, help='Знаменатель')
    args = parser.parse_args()
    try:
        result = divide(args.a, args.b)
        print(f'Результат: {result}')
    except InvalidInputError as e:
        print(f'Ошибка: {e}')

Примеры практического использования

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

Пример: Сбор данных с веб-страницы

import argparse
import requests

def fetch_url(url: str) -> str:
    """Функция для получения содержимого URL."""
    response = requests.get(url)
    response.raise_for_status()
    return response.text

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Получение данных с указанного URL.')
    parser.add_argument('url', type=str, help='URL для получения данных')
    args = parser.parse_args()
    data = fetch_url(args.url)
    print(data)

Пример: Визуализация данных с использованием Matplotlib

import argparse
import matplotlib.pyplot as plt

def plot_data(x: list[int], y: list[int]) -> None:
    """Функция для построения графика."""
    plt.plot(x, y)
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Пример графика')
    plt.show()

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Построение графика данных.')
    parser.add_argument('x', nargs='+', type=int, help='Список значений по оси X')
    parser.add_argument('y', nargs='+', type=int, help='Список значений по оси Y')
    args = parser.parse_args()
    plot_data(args.x, args.y)

Заключение

В этой статье мы узнали, как вызывать функции Python из командной строки с различными аргументами. Мы рассмотрели использование модуля argparse, обработку ошибок и примеры практического применения. Надеемся, что вы сможете применять эти навыки в своих проектах.

Ссылки


Добавить комментарий