Python 3: от написания до запуска скрипта

Раздел: Python -> Создание и выполнение скриптов

Введение в создание скриптов Python

Скрипт на Python представляет собой текстовый файл с расширением .py, содержащий программный код. Для его выполнения необходим установленный интерпретатор Python 3. Рассмотрим основные подходы к созданию и запуску скриптов.

Базовый способ: написание и запуск через командную строку

Как создать скрипт и выполнить его?

Файл с расширением .py, например script.py, создаётся в любом текстовом редакторе. В него записывается простой код:

print("Привет, мир!")

как запустить скрипт python в windows (выполнение скриптов python)

Затем в терминале выполняется команда:

python3 script.py

Python готовый скрипт (примеры скриптов python)

На экране появляется строка Привет, мир!

Возможные проблемы: Команда python3 может отсутствовать, если Python 3 не установлен или установлен под именем python. Проверка версии интерпретатора выполняется командами python --version или python3 --version. Если на системе установлен только Python 2, скрипты Python 3 не запустятся. Решение: установить Python 3 с официального сайта или через пакетный менеджер.

Как сделать скрипт исполняемым в Unix-подобных системах?

В первую строку файла добавляется shebang: #!/usr/bin/env python3. Затем устанавливается разрешение на выполнение: chmod +x script.py. После этого скрипт можно запускать напрямую: ./script.py.

#!/usr/bin/env python3\nprint("Запуск без явного вызова python3")

Python папка скрипта (работа со скриптами python)

Цель: упрощение запуска, особенно для повторных выполнений. Используется в автоматизации и скриптах командной строки.

Ошибка: если первая строка содержит ошибку в пути к интерпретатору, система выдаст сообщение 'bad interpreter'. Следует убедиться, что python3 находится в PATH. В Windows эта техника не работает напрямую, но можно использовать ассоциацию файлов.

Как передать параметры в скрипт при запуске?

Модуль sys предоставляет список argv, содержащий имя скрипта и переданные аргументы. Например, файл greet.py:

import sys\nif len(sys.argv) > 1:\n    name = sys.argv[1]\n    print(f"Привет, {name}!")\nelse:\n    print("Привет, мир!")

Python 3 скрипты (создание скриптов на python)

Запуск: python3 greet.py Алексей выведет Привет, Алексей!

Цель: создание гибких скриптов, реагирующих на внешние данные. Удобно для утилит командной строки.

Частая ошибка: необработанный IndexError при отсутствии аргументов. Всегда проверяется длина списка argv.

Как создать скрипт с поддержкой именованных аргументов и флагов?

Модуль argparse позволяет определить аргументы, их типы, значения по умолчанию и справку. Пример:

import argparse\nparser = argparse.ArgumentParser(description='Приветствие пользователя')\nparser.add_argument('--name', default='мир', help='Имя для приветствия')\nparser.add_argument('--count', type=int, default=1, help='Количество повторений')\nargs = parser.parse_args()\nfor _ in range(args.count):\n    print(f"Привет, {args.name}!")

Запуск: python3 greet.py --name Анна --count 3 выведет три строки.

Цель: создание профессиональных интерфейсов командной строки с автоматической генерацией помощи.

Проблемы: неправильное указание типа может привести к ошибке преобразования. Используется параметр type. Справка выводится при --help.

Как организовать скрипт для повторного использования функций в других модулях?

Основной код помещается внутрь условия if __name__ == '__main__':. Это позволяет выполнять код только при запуске файла как основного скрипта. При импортировании модуля код не выполняется, а функции остаются доступны.

def greet(name):\n    return f"Привет, {name}!"\nif __name__ == '__main__':\n    import sys\n    name = sys.argv[1] if len(sys.argv) > 1 else 'мир'\n    print(greet(name))

Цель: разделение логики и точки входа, возможность импортировать функции в другие скрипты. Широко используется в больших проектах.

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

Как обрабатывать файлы в скрипте Python?

Для чтения и записи файлов используется встроенная функция open. Пример программы, читающей файл и выводящей количество строк:

import sys\nif len(sys.argv) < 2:\n    print("Укажите имя файла")\n    sys.exit(1)\nfilename = sys.argv[1]\ntry:\n    with open(filename, 'r', encoding='utf-8') as f:\n        lines = f.readlines()\n    print(f"Файл {filename} содержит {len(lines)} строк.")\nexcept FileNotFoundError:\n    print(f"Файл {filename} не найден.")

Цель: автоматизация обработки текстовых данных, логирования, генерации отчетов.

Типичные ошибки: забыт режим (например, 'w' вместо 'r'), неправильная кодировка (по умолчанию зависит от системы). Рекомендуется явно указывать encoding='utf-8'.

Расширенные примеры создания скриптов

Пример 1: Скрипт для подсчёта частоты слов в текстовом файле.

Пример
#!/usr/bin/env python3\nimport sys\nimport string\nfrom collections import Counter\n\ndef get_word_frequency(filename, top_n=10):\n    try:\n        with open(filename, 'r', encoding='utf-8') as f:\n            text = f.read().lower()\n            # Удаление знаков препинания\n            text = text.translate(str.maketrans('', '', string.punctuation))\n            words = text.split()\n            counter = Counter(words)\n            return counter.most_common(top_n)\n    except FileNotFoundError:\n        print(f"Ошибка: файл '{filename}' не найден.")\n        return None\n\nif __name__ == '__main__':\n    import argparse\n    parser = argparse.ArgumentParser(description='Анализ частоты слов в файле')\n    parser.add_argument('file', help='Путь к текстовому файлу')\n    parser.add_argument('--top', type=int, default=10, help='Количество наиболее частых слов')\n    args = parser.parse_args()\n    result = get_word_frequency(args.file, args.top)\n    if result:\n        print(f"Топ {args.top} слов в файле '{args.file}':")\n        for word, count in result:\n            print(f"  {word}: {count}")

Результат выполнения для файла example.txt с содержимым 'hello world hello python world python python':

Топ 10 слов в файле 'example.txt':\n  python: 3\n  world: 2\n  hello: 2

Пояснение: скрипт использует shebang, argparse, функцию с возвратом, обработку исключений. Counter удобен для подсчёта.

Пример 2: Скрипт для генерации резервной копии директории с архивацией.

Пример
#!/usr/bin/env python3\nimport os\nimport sys\nimport shutil\nimport datetime\nimport argparse\n\ndef backup_dir(source, dest):\n    if not os.path.isdir(source):\n        print(f"Ошибка: исходная директория '{source}' не существует.")\n        sys.exit(1)\n    timestamp = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')\n    backup_name = f"{os.path.basename(source)}_backup_{timestamp}"\n    backup_path = os.path.join(dest, backup_name)\n    try:\n        shutil.copytree(source, backup_path, symlinks=True, ignore_dangling_symlinks=True)\n        # Создание архива (zip)\n        shutil.make_archive(backup_path, 'zip', backup_path)\n        # Удаление неархивированной копии (опционально)\n        shutil.rmtree(backup_path)\n        print(f"Резервная копия создана: {backup_path}.zip")\n    except Exception as e:\n        print(f"Ошибка при создании резервной копии: {e}")\n\nif __name__ == '__main__':\n    parser = argparse.ArgumentParser(description='Создание резервной копии папки')\n    parser.add_argument('source', help='Путь к копируемой папке')\n    parser.add_argument('dest', help='Путь для сохранения резервной копии')\n    args = parser.parse_args()\n    backup_dir(args.source, args.dest)

Результат: в папке назначения появляется zip-архив с именем папки и временной меткой.

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

Пример
#!/usr/bin/env python3\nimport subprocess\nimport sys\nimport os\n\ndef create_venv_and_install(project_dir, requirements_file):\n    if not os.path.isdir(project_dir):\n        print(f"Директория {project_dir} не найдена.")\n        sys.exit(1)\n    venv_path = os.path.join(project_dir, 'venv')\n    if not os.path.isdir(venv_path):\n        print("Создание виртуального окружения...")\n        subprocess.run([sys.executable, '-m', 'venv', venv_path], check=True)\n    pip = os.path.join(venv_path, 'bin', 'pip')\n    if not os.path.exists(pip):\n        pip = os.path.join(venv_path, 'Scripts', 'pip.exe')  # для Windows\n    print("Установка зависимостей...")\n    subprocess.run([pip, 'install', '-r', requirements_file], check=True)\n    print("Готово.")\n\nif __name__ == '__main__':\n    import argparse\n    parser = argparse.ArgumentParser()\n    parser.add_argument('project', help='Путь к проекту')\n    parser.add_argument('--requirements', default='requirements.txt', help='Файл с зависимостями')\n    args = parser.parse_args()\n    create_venv_and_install(args.project, args.requirements)

Этот скрипт автоматизирует создание изолированной среды и установку пакетов, что полезно для воспроизводимости.

Создание скриптов на Python - comments

En
Python 3 скрипты (python)