Cкрипты | Python: Настройка окружения

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

В интерпретируемых языках от написания кода до запуска — всего один шаг. Ничего не нужно компилировать в машинный код.

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

Если на каком-то языке удобно писать скрипты, его называют «скриптовым языком» или «языком для написания сценариев».

Скрипты на Python

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

# file <script.py>
print('Hello, world!')
print('This is a python-script!')

Затем мы просто вызываем интерпретатор с полученным файлом на входе:

python3 script. py
Hello, world!
This is a python-script!

У Python много полезных модулей и функций, входящих в поставку. Поэтому его часто используют для автоматизации различных задач, которые не хочется выполнять вручную при работе на компьютере. К тому же написание скриптов — отличная отправная точка для тех, кто только начинает знакомиться с программированием.

Скрипты и shebang

В Linux, macOS, BSD и других unix-подобных операционных системах командные оболочки умеют запускать скрипты на любых языках, в том числе и на Python. При этом скрипты сообщают оболочке, какой интерпретатор нужно вызывать для выполнения сценария.

Интерпретатор указывается специальной строкой в самой первой строчке файла скрипта, которая называется shebang. Это название произошло от первых двух символов такой строчки: # называется sharp, а ! — bang.

Типичный shebang выглядит так:

#!/usr/bin/python3

После символов #! идет путь до интерпретатора. При запуске скрипта с shebang командная оболочка читает первую строку и пробует запустить указанный интерпретатор. Если скрипту с указанным shebang дать права на исполнение, то интерпретатор в командной строке можно не указывать:

cat script.py
#!/usr/bin/python3
print('Hello!')
chmod +x script.py
./script.py
Hello!

Shebang и разные версии Python

В целом shebang — штука довольно простая, когда интерпретатор в системе ровно один. Но мы с вами знаем, что версий Python в системе может быть установлено несколько. Более того, в виртуальном окружении путь к интерпретатору будет отличаться от /usr/bin и будет разным в разных окружениях.

Как сделать так, чтобы скрипт запускался всегда с нужной версией Python? Нужно всего лишь не указывать путь до команды python напрямую, а использовать программу env.

Эта программа умеет находить и запускать программы с учетом переменных окружения. При активации виртуального окружения модифицируется переменная

$PATH, поэтому env будет запускать именно ту версию интерпретатора, которая нам нужна. Нужная версия просто найдется раньше, потому что путь до исполняемых файлов окружения добавляется в начало $PATH.

А теперь рассмотрим правильный способ указывать shebang в проектах на python:

#!/usr/bin/env python3
print('Hello!')

Разработка надёжных Python-скриптов / Хабр

Python — это язык программирования, который отлично подходит для разработки самостоятельных скриптов. Для того чтобы добиться с помощью подобного скрипта желаемого результата, нужно написать несколько десятков или сотен строк кода. А после того, как дело сделано, можно просто забыть о написанном коде и перейти к решению следующей задачи.

Если, скажем, через полгода после того, как был написан некий «одноразовый» скрипт, кто-то спросит его автора о том, почему этот скрипт даёт сбои, об этом может не знать и автор скрипта. Происходит подобное из-за того, что к такому скрипту не была написана документация, из-за использования параметров, жёстко заданных в коде, из-за того, что скрипт ничего не логирует в ходе работы, и из-за отсутствия тестов, которые позволили бы быстро понять причину проблемы.

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

Автор материала, перевод которого мы сегодня публикуем, собирается продемонстрировать подобное «превращение» на примере классической задачи «Fizz Buzz Test». Эта задача заключается в том, чтобы вывести список чисел от 1 до 100, заменив некоторые из них особыми строками. Так, если число кратно 3 — вместо него нужно вывести строку Fizz, если число кратно 5 — строку Buzz, а если соблюдаются оба этих условия — FizzBuzz.

Исходный код

Вот исходный код Python-скрипта, который позволяет решить задачу:

import sys
for n in range(int(sys.argv[1]), int(sys.argv[2])):
    if n % 3 == 0 and n % 5 == 0:
        print("fizzbuzz")
    elif n % 3 == 0:
        print("fizz")
    elif n % 5 == 0:
        print("buzz")
    else:
        print(n)

Поговорим о том, как его улучшить.

Документация

Я считаю, что полезно писать документацию до написания кода. Это упрощает работу и помогает не затягивать создание документации до бесконечности. Документацию к скрипту можно поместить в его верхнюю часть. Например, она может выглядеть так:

#!/usr/bin/env python3
"""Simple fizzbuzz generator.
This script prints out a sequence of numbers from a provided range
with the following restrictions:
 - if the number is divisible by 3, then print out "fizz",
 - if the number is divisible by 5, then print out "buzz",
 - if the number is divisible by 3 and 5, then print out "fizzbuzz".
"""

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

Аргументы командной строки

Следующей задачей по улучшению скрипта станет замена значений, жёстко заданных в коде, на документированные значения, передаваемые скрипту через аргументы командной строки.

Реализовать это можно с использованием модуля argparse. В нашем примере мы предлагаем пользователю указать диапазон чисел и указать значения для «fizz» и «buzz», используемые при проверке чисел из указанного диапазона.

import argparse
import sys
class CustomFormatter(argparse.RawDescriptionHelpFormatter,
                      argparse.ArgumentDefaultsHelpFormatter):
    pass
def parse_args(args=sys.argv[1:]):
    """Parse arguments."""
    parser = argparse.ArgumentParser(
        description=sys.modules[__name__].__doc__,
        formatter_class=CustomFormatter)
    g = parser.add_argument_group("fizzbuzz settings")
    g.add_argument("--fizz", metavar="N",
                   default=3,
                   type=int,
                   help="Modulo value for fizz")
    g.add_argument("--buzz", metavar="N",
                   default=5,
                   type=int,
                   help="Modulo value for buzz")
    parser.add_argument("start", type=int, help="Start value")
    parser.
add_argument("end", type=int, help="End value")     return parser.parse_args(args) options = parse_args() for n in range(options.start, options.end + 1):     # ...

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

--help. Более того, по соответствующей команде выводится и документация, которую мы написали в предыдущем разделе:

$ ./fizzbuzz.py --help
usage: fizzbuzz.py [-h] [--fizz N] [--buzz N] start end
Simple fizzbuzz generator.
This script prints out a sequence of numbers from a provided range
with the following restrictions:
 - if the number is divisible by 3, then print out "fizz",
 - if the number is divisible by 5, then print out "buzz",
 - if the number is divisible by 3 and 5, then print out "fizzbuzz".
positional arguments:
  start         Start value
  end           End value
optional arguments:
  -h, --help    show this help message and exit
fizzbuzz settings:
  --fizz N      Modulo value for fizz (default: 3)
  --buzz N      Modulo value for buzz (default: 5)

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

Логирование

Если оснастить скрипт возможностями по выводу некоей информации в ходе его выполнения — это окажется приятным дополнением к его функционалу. Для этой цели хорошо подходит модуль logging. Для начала опишем объект, реализующий логирование:

import logging
import logging.handlers
import os
import sys
logger = logging.getLogger(os.path.splitext(os.path.basename(sys.argv[0]))[0])

Затем сделаем так, чтобы подробностью сведений, выводимых при логировании, можно было бы управлять. Так, команда logger.debug() должна выводить что-то только в том случае, если скрипт запускают с ключом --debug

. Если же скрипт запускают с ключом --silent — скрипт не должен выводить ничего кроме сообщений об исключениях. Для реализации этих возможностей добавим в parse_args() следующий код:

# В parse_args()
g = parser.add_mutually_exclusive_group()
g.add_argument("--debug", "-d", action="store_true",
               default=False,
               help="enable debugging")
g.add_argument("--silent", "-s", action="store_true",
               default=False,
               help="don't log to console")

Добавим в код проекта следующую функцию для настройки логирования:

def setup_logging(options):
    """Configure logging."""
    root = logging.getLogger("")
    root.setLevel(logging.WARNING)
    logger.setLevel(options.debug and logging.DEBUG or logging.INFO)
    if not options.silent:
        ch = logging.StreamHandler()
        ch.setFormatter(logging.Formatter(
            "%(levelname)s[%(name)s] %(message)s"))
        root.addHandler(ch)

Основной код скрипта при этом изменится так:

if __name__ == "__main__":
    options = parse_args()
    setup_logging(options)
    try:
        logger. debug("compute fizzbuzz from {} to {}".format(options.start,
                                                             options.end))
        for n in range(options.start, options.end + 1):
            # ..
    except Exception as e:
        logger.exception("%s", e)
        sys.exit(1)
    sys.exit(0)

Если скрипт планируется запускать без прямого участия пользователя, например, с помощью crontab, можно сделать так, чтобы его вывод поступал бы в syslog:

def setup_logging(options):
    """Configure logging."""
    root = logging.getLogger("")
    root.setLevel(logging.WARNING)
    logger.setLevel(options.debug and logging.DEBUG or logging.INFO)
    if not options.silent:
        if not sys.stderr.isatty():
            facility = logging.handlers.SysLogHandler.LOG_DAEMON
            sh = logging.handlers.SysLogHandler(address='/dev/log',
                                                facility=facility)
            sh. setFormatter(logging.Formatter(
                "{0}[{1}]: %(message)s".format(
                    logger.name,
                    os.getpid())))
            root.addHandler(sh)
        else:
            ch = logging.StreamHandler()
            ch.setFormatter(logging.Formatter(
                "%(levelname)s[%(name)s] %(message)s"))
            root.addHandler(ch)

В нашем небольшом скрипте неоправданно большим кажется подобный объём кода, нужный только для того, чтобы воспользоваться командой logger.debug(). Но в реальных скриптах этот код уже таким не покажется и на первый план выйдет польза от него, заключающаяся в том, что с его помощью пользователи смогут узнавать о ходе решения задачи.

$ ./fizzbuzz.py --debug 1 3
DEBUG[fizzbuzz] compute fizzbuzz from 1 to 3
1
2
fizz

Тесты

Модульные тесты — это полезнейшее средство для проверки того, ведёт ли себя приложения так, как нужно. В скриптах модульные тесты используют нечасто, но их включение в скрипты значительно улучшает надёжность кода. Преобразуем код, находящийся внутри цикла, в функцию, и опишем несколько интерактивных примеров её использования в её документации:

def fizzbuzz(n, fizz, buzz):
    """Compute fizzbuzz nth item given modulo values for fizz and buzz.
    >>> fizzbuzz(5, fizz=3, buzz=5)
    'buzz'
    >>> fizzbuzz(3, fizz=3, buzz=5)
    'fizz'
    >>> fizzbuzz(15, fizz=3, buzz=5)
    'fizzbuzz'
    >>> fizzbuzz(4, fizz=3, buzz=5)
    4
    >>> fizzbuzz(4, fizz=4, buzz=6)
    'fizz'
    """
    if n % fizz == 0 and n % buzz == 0:
        return "fizzbuzz"
    if n % fizz == 0:
        return "fizz"
    if n % buzz == 0:
        return "buzz"
    return n

Проверить правильность работы функции можно с помощью pytest:

$ python3 -m pytest -v --doctest-modules ./fizzbuzz.py
============================ test session starts =============================
platform linux -- Python 3. 7.4, pytest-3.10.1, py-1.8.0, pluggy-0.8.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/bernat/code/perso/python-script, inifile:
plugins: xdist-1.26.1, timeout-1.3.3, forked-1.0.2, cov-2.6.0
collected 1 item
fizzbuzz.py::fizzbuzz.fizzbuzz PASSED                                  [100%]
========================== 1 passed in 0.05 seconds ==========================

Для того чтобы всё это заработало, нужно, чтобы после имени скрипта шло бы расширение .py. Мне не нравится добавлять расширения к именам скриптов: язык — это лишь техническая деталь, которую не нужно демонстрировать пользователю. Однако возникает такое ощущение, что оснащение имени скрипта расширением — это самый простой способ позволить системам для запуска тестов, вроде pytest, находить тесты, включённые в код.

В случае возникновения ошибки pytest выведет сообщение, указывающее на расположение соответствующего кода и на суть проблемы:

$ python3 -m pytest -v --doctest-modules . /fizzbuzz.py -k fizzbuzz.fizzbuzz
============================ test session starts =============================
platform linux -- Python 3.7.4, pytest-3.10.1, py-1.8.0, pluggy-0.8.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/bernat/code/perso/python-script, inifile:
plugins: xdist-1.26.1, timeout-1.3.3, forked-1.0.2, cov-2.6.0
collected 1 item
fizzbuzz.py::fizzbuzz.fizzbuzz FAILED                                  [100%]
================================== FAILURES ==================================
________________________ [doctest] fizzbuzz.fizzbuzz _________________________
100
101     >>> fizzbuzz(5, fizz=3, buzz=5)
102     'buzz'
103     >>> fizzbuzz(3, fizz=3, buzz=5)
104     'fizz'
105     >>> fizzbuzz(15, fizz=3, buzz=5)
106     'fizzbuzz'
107     >>> fizzbuzz(4, fizz=3, buzz=5)
108     4
109     >>> fizzbuzz(4, fizz=4, buzz=6)
Expected:
    fizz
Got:
    4
/home/bernat/code/perso/python-script/fizzbuzz.py:109: DocTestFailure
========================== 1 failed in 0. 02 seconds ==========================

Модульные тесты можно писать и в виде обычного кода. Представим, что нам нужно протестировать следующую функцию:

def main(options):
    """Compute a fizzbuzz set of strings and return them as an array."""
    logger.debug("compute fizzbuzz from {} to {}".format(options.start,
                                                         options.end))
    return [str(fizzbuzz(i, options.fizz, options.buzz))
            for i in range(options.start, options.end+1)]

В конце скрипта добавим следующие модульные тесты, использующие возможности pytest по использованию параметризованных тестовых функций:

# Модульные тесты
import pytest                   # noqa: E402
import shlex                    # noqa: E402
@pytest.mark.parametrize("args, expected", [
    ("0 0", ["fizzbuzz"]),
    ("3 5", ["fizz", "4", "buzz"]),
    ("9 12", ["fizz", "buzz", "11", "fizz"]),
    ("14 17", ["14", "fizzbuzz", "16", "17"]),
    ("14 17 --fizz=2", ["fizz", "buzz", "fizz", "17"]),
    ("17 20 --buzz=10", ["17", "fizz", "19", "buzz"]),
])
def test_main(args, expected):
    options = parse_args(shlex. split(args))
    options.debug = True
    options.silent = True
    setup_logging(options)
    assert main(options) == expected

Обратите внимание на то, что, так как код скрипта завершается вызовом sys.exit(), при его обычном вызове тесты выполняться не будут. Благодаря этому pytest для запуска скрипта не нужен.

Тестовая функция будет вызвана по одному разу для каждой группы параметров. Сущность args используется в качестве входных данных для функции parse_args(). Благодаря этому механизму мы получаем то, что нужно передать функции main(). Сущность expected сравнивается с тем, что выдаёт main(). Вот что сообщит нам pytest в том случае, если всё работает так, как ожидается:

$ python3 -m pytest -v --doctest-modules ./fizzbuzz.py
============================ test session starts =============================
platform linux -- Python 3. 7.4, pytest-3.10.1, py-1.8.0, pluggy-0.8.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/bernat/code/perso/python-script, inifile:
plugins: xdist-1.26.1, timeout-1.3.3, forked-1.0.2, cov-2.6.0
collected 7 items
fizzbuzz.py::fizzbuzz.fizzbuzz PASSED                                  [ 14%]
fizzbuzz.py::test_main[0 0-expected0] PASSED                           [ 28%]
fizzbuzz.py::test_main[3 5-expected1] PASSED                           [ 42%]
fizzbuzz.py::test_main[9 12-expected2] PASSED                          [ 57%]
fizzbuzz.py::test_main[14 17-expected3] PASSED                         [ 71%]
fizzbuzz.py::test_main[14 17 --fizz=2-expected4] PASSED                [ 85%]
fizzbuzz.py::test_main[17 20 --buzz=10-expected5] PASSED               [100%]
========================== 7 passed in 0.03 seconds ==========================

Если произойдёт ошибка — pytest даст полезные сведения о том, что случилось:

$ python3 -m pytest -v --doctest-modules . /fizzbuzz.py
[...]
================================== FAILURES ==================================
__________________________ test_main[0 0-expected0] __________________________
args = '0 0', expected = ['0']
    @pytest.mark.parametrize("args, expected", [
        ("0 0", ["0"]),
        ("3 5", ["fizz", "4", "buzz"]),
        ("9 12", ["fizz", "buzz", "11", "fizz"]),
        ("14 17", ["14", "fizzbuzz", "16", "17"]),
        ("14 17 --fizz=2", ["fizz", "buzz", "fizz", "17"]),
        ("17 20 --buzz=10", ["17", "fizz", "19", "buzz"]),
    ])
    def test_main(args, expected):
        options = parse_args(shlex.split(args))
        options.debug = True
        options.silent = True
        setup_logging(options)
       assert main(options) == expected
E       AssertionError: assert ['fizzbuzz'] == ['0']
E         At index 0 diff: 'fizzbuzz' != '0'
E         Full diff:
E         - ['fizzbuzz']
E         + ['0']
fizzbuzz.py:160: AssertionError
----------------------------- Captured log call ------------------------------
fizzbuzz. py                125 DEBUG    compute fizzbuzz from 0 to 0
===================== 1 failed, 6 passed in 0.05 seconds =====================

В эти выходные данные включён и вывод команды logger.debug(). Это — ещё одна веская причина для использования в скриптах механизмов логирования. Если вы хотите узнать подробности о замечательных возможностях pytest — взгляните на этот материал.

Итоги

Сделать Python-скрипты надёжнее можно, выполнив следующие четыре шага:

  • Оснастить скрипт документацией, размещаемой в верхней части файла.
  • Использовать модуль argparse для документирования параметров, с которыми можно вызывать скрипт.
  • Использовать модуль logging для вывода сведений о процессе работы скрипта.
  • Написать модульные тесты.

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

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

Уважаемые читатели! Планируете ли вы применять рекомендации по написанию Python-скриптов, данные в этой публикации?

Узнайте, как запустить ваш скрипт Python — скрипт Python

Содержание

Историческое размытие языков сценариев и языков программирования общего назначения привело к тому, что Python стал рассматриваться широкой аудиторией как язык сценариев. Сценарий Python — это файл, содержащий команды, структурированные для выполнения в виде программы. Но как вы его запускаете? Что мы имеем в виду под запуском скрипта Python? Давайте узнаем ответы на все эти вопросы с помощью этого блога о Python Script.

  1. Что такое Python Script
  2. Как можно выполнить программу Python?
  3. Необходимость написания сценариев 
  4. Преимущества написания сценариев
  5. Python и Java
  6. Как писать сценарии Python?
  7. Необходимость документирования кода
  8. Как перезагрузить модули
  9. Преобразование скрипта Python в файл .exe
  10. В чем разница между кодом, сценарием и модулями?

Что такое скрипт Python?

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

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

Как можно выполнить программу Python?

Различные способы успешного выполнения программы Python:

  1. Терминалом Python. Интерактивный режим программирования используется для разработки новых решений с нуля и их реализации самыми современными способами.
  2. С помощью сценариев.

Необходимость написания сценариев 

Разработка сложных программ с использованием терминала Python очень сложна, сложна и требует много времени. Скрипты используются для разработки таких сложных и больших программ.

Пользователи Windows:

Шаги для методов: сначала написание программы python в блокноте, затем сохранение программы, сохраненной с использованием расширения . py, и, наконец, выполнение соответствующей программы путем ввода имени программы в командная строка «python filename.py».

Примечание: Правильно установите переменную пути перед выполнением скрипта.

Пользователи Mac:

Дважды щелкните сценарий в Finder, чтобы запустить приложение сценария. События и результаты нельзя просмотреть, если приложение-скрипт запущено вне редактора Script   .

Преимущества сценариев

Создание сценариев, разработка набора команд, предназначенных для совместной работы для выполнения необходимой задачи или набора задач.

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

Примечание: Считается, что Python по-прежнему имеет преимущество, и скрипты в основном можно использовать для задач, связанных с интеграцией. Разработчики должны знать границы и уважать их.

Python и Java

Скрипты Python — это не что иное, как коды, написанные в программах Python.

Как и в Java, в Python есть PVM (виртуальная машина Python). PVM может преобразовать сценарий в байтовый код. Файлы .pyc в python, также известные как скомпилированные файлы python, используют аналогичную архитектуру для выполнения. В python процесс выполняется для модулей для повышения производительности во время выполнения.

Состояние Python:

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

Архитектура программы отличается от сплошного скрипта. Он сложен и разнообразен.

Как писать скрипты Python?

Скрипт на питоне и шелл-скрипт — почти одно и то же. Обе они представляют собой строки кода Python, написанные в текстовом файле; эти коды Python разработаны как решения, которые выполняются систематически.

Необходим текстовый редактор с подсветкой синтаксиса. Разработчики могут легко создавать и редактировать скрипт Python с помощью хорошего текстового редактора.

Наиболее универсальным текстовым редактором, доступным в настоящее время на рынке, является VSCode, предоставленный Microsoft.

Пользователи Windows:

Можно установить и запустить напрямую или через Anaconda

Пользователи Mac:

Можно установить и запустить через Anaconda.

Необходимость документирования кода

Очень важно документировать написанный код Python. Это помогает легко использовать код для других, а также для себя. При наличии надлежащей документации структуру и использование соответствующего кода можно легко запомнить для будущих целей. Для документирования исходного кода мы используем комментарии. Комментарии обозначаются #. Python игнорирует текст, написанный в виде комментариев.

Примечание:

  • Файлы с обычным текстом можно использовать для создания и хранения команд Python 
  • Используйте python <имя сценария> для запуска соответствующего файла
  • Расширение .py обычно используется для сценариев Python.
  • Всегда выбирайте текстовый редактор с подсветкой синтаксиса для редактирования сценариев Python.
  • Используйте комментарии, так как они улучшают читабельность вашего кода и могут быть использованы для понимания структуры и использования скрипта в будущих целях.

Как перезагрузить модули

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

При импорте модуля Python защищает команды для импорта соответствующего модуля. Если другой оператор делает команду для импорта того же модуля, Python автоматически игнорирует эту команду. Папка сис. modules содержит список уже загруженных модулей. Загрузка одного и того же модуля может занять много времени.

Для принудительной перезагрузки модуля при отладке скрипта с использованием файла .exe или запуске программы из оболочки IPython необходимо использовать команду reload. В противном случае внесенные в скрипт изменения не будут обновлены после повторного выполнения скрипта.

Преобразование сценария Python в файл .exe

С помощью файла .exe разработанная программа может быть запущена в системе без использования оболочки IDE.

Шаг 1: Используйте команду: pip install pyinstaller, введите ее в командной строке

Шаг 2: Откройте каталог, в котором находится соответствующий файл .py.

Шаг 3: Откройте окно оболочки Power, нажав правую кнопку и одновременно нажав кнопку Shift.

Шаг 4: Используйте команду: pyinstaller –onefile -w ‘filename.py’, введите ее в командной строке

Шаг 5: После выполнения команды перейдите в новоиспеченный каталог, откройте папка dist для exe.file

В чем разница между кодом, сценарием и модулями?
Код Скрипт Модули
Код — это код, например, кр. и т. д. Компилятор или интерпретатор должен заставить компьютер понять значение и успешно выполнить их. Сценарий представляет собой набор инструкций, которые компьютер понимает без помощи компилятора или интерпретатора для выполнения определенных поставленных задач. Модули представляют собой наиболее независимо работающий набор компьютерных инструкций, которые в основном используются для интеграции одного устройства с другим, с модулями, содержащими определенный код, который является переносимым, совместимым и эффективным. После разработки может быть интегрирован с небольшими изменениями или без изменений.
Пример: обычный исходный код этапа 1, который напишет любой программист  Пример: JavaScript, Perl и т. д. Пример: ERP с множеством модулей, таких как посещаемость, отпуск и т. д. Они могут быть встроены в любую компанию с минимальными изменениями или без них.

Интерпретатор Python: 

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

Код Python можно создать в любом текстовом редакторе и сохранить в нашей системе с расширением «.py». Так что же не так с этим кодом? Некоторые программы или программное обеспечение, такие как «python» или «python3», должны быть установлены на вашем компьютере, и они должны запускать код Python. Этот тип программного обеспечения известен как интерпретатор.

Python включает ряд полезных функций.

Поскольку интерпретатор Python сначала получает команду, затем оценивает ее, выводит результаты, а затем возвращается к чтению команды, только Python называется REPL (чтение, оценка, печать, цикл).

Перейдите по этой ссылке, чтобы загрузить последнюю версию Python

Запуск интерпретатора Python

Чтобы начать интерпретацию Python, вам необходимо загрузить и установить новейшее бесплатное программное обеспечение Python с открытым исходным кодом. Мы можем использовать интерпретатор Python после завершения установки. С чего начать? Это вопрос, который возникает. Итак, в ответ на этот запрос у нас есть несколько вариантов для начала работы с интерпретацией Python на досуге. Для успешного кодирования вы можете выбрать один из вариантов ниже.

Метод 1: Используйте обычный блокнот для написания кода, сохраните его с расширением a. py, затем запустите его, перетащив файл во встроенную командную строку Python, которую мы называем Python Shell /RELP.

Способ 2: Используйте Python IDE, часть программного обеспечения, помогающую создавать и выполнять файлы кода.

Метод 3: Используйте онлайн-интерпретаторы Python или рабочие среды, такие как Google Colab или другие IDE Python.

Метод 4: Другие бесплатные варианты IDE с открытым исходным кодом для интерпретации кода Python включают Anaconda, Jupyter Notebook, Spyder и другие.

Интерактивный запуск кода Python

Для итеративного запуска кода у нас есть возможность использовать Python SHELL/RELP. Это помогает нам запускать код в интерактивном режиме в том смысле, что он будет принимать код построчно и давать немедленный вывод на следующей строке.

Шаги для начала работы с Python SHELL

Чтобы использовать оболочку Python, введите python в командной строке или оболочке Power в Windows или в окне терминала на Mac > >>> появится приглашение Python с тремя символами больше >> > Теперь вы можете получить результат всего одним предложением. Введите базовую фразу, например 7 – 2, и нажмите Enter; результат появится на следующей строке, как показано ниже.

Как запустить скрипт Python с помощью интерпретатора?

Для этого необходимо выполнить следующие шаги:

  • Интерпретатор сначала обрабатывает операторы или выражения вашего сценария в последовательном порядке.
  • Затем код преобразуется в байт-код, который является типом набора инструкций.
  • Код преобразуется в байт-код, который является языком низкого уровня. Это машинно-независимый промежуточный код, оптимизирующий процесс выполнения кода. В результате, когда интерпретатор снова запускает код, он пропускает стадию компиляции.

Наконец, интерпретатор отправляет код процессору для выполнения. Виртуальная машина Python (PVM) — это заключительный этап в интерпретаторе Python. Это компонент среды Python, установленный на вашем компьютере. В среде выполнения Python PVM загружает байт-код, считывает каждую операцию и выполняет ее.

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

Самый популярный метод — использование обычного текстового редактора для написания программы Python. Код, написанный в интерактивном сеансе Python, теряется после его закрытия, хотя это позволяет пользователю написать много строк кода. Файлы имеют расширение a.py в Windows.

Если вы только начинаете работать с Python, вы можете использовать простые текстовые редакторы, такие как Sublime или Notepad++, или любой другой текстовый редактор.

Затем просто нажмите клавишу ENTER на клавиатуре. На экране вы можете увидеть фразу Hello World! Поздравляю! Вы только что закончили выполнять свой первый скрипт Python.

Если вы не получили вывод, вам следует проверить системный PATH и место, где вы сохранили файл. Если это все еще не работает, попробуйте переустановить Python на свой компьютер.

Как запускать сценарии Python из IDE или текстового редактора

Помимо основных инструментов, интегрированная среда разработки (IDE) — это приложение, которое позволяет разработчику создавать программное обеспечение в интегрированной среде.

Для написания, отладки, изменения и запуска ваших модулей и сценариев вы можете использовать Python IDLE, базовую IDE, входящую в стандартный дистрибутив Python. Другие IDE, которые позволяют вам запускать сценарии в своей среде, включают Spyder, PyCharm, Eclipse и Jupyter Notebook.

Скрипты Python также можно запускать в популярных текстовых редакторах, таких как Sublime и Atom.

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

Как запускать сценарии Python из диспетчера файлов

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

Однако для этого необходимо следовать различным критериям:

Вы должны сохранить файл сценария с расширением .py для python. exe и .pyw для pythonw.exe в Windows, чтобы запустить его двойным щелчком в теме.

Если вы запускаете свой скрипт из командной строки, вы почти наверняка столкнетесь с ситуацией, когда на экране будет мигать черное окно. Включите оператор input(‘Enter’) в конец скрипта, чтобы избежать этого. Когда вы нажмете клавишу ENTER, программа закроется. Стоит отметить, что функция input() будет работать только в том случае, если ваш код не содержит ошибок.

  • Ваш скрипт Python должен включать строку hashbang и разрешения на выполнение в GNU/Linux и других Unix-подобных системах. В файловом менеджере метод двойного щелчка иначе работать не будет.

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

В результате этот параметр следует использовать только после того, как код отлажен и пригоден для производства.

Это подводит нас к концу блога о том, как запустить скрипт Python. Мы надеемся, что вы поняли концепцию всесторонне. Чтобы узнать больше о таких концепциях, присоединяйтесь к курсу Great Learning PGP по искусственному интеллекту и машинному обучению и повышайте квалификацию уже сегодня. Курс PGP-AIML предлагает онлайн-наставничество и поддержку карьеры, чтобы помочь вам продвинуться вперед в своей карьере.

Сочетание обучения со всемирно известными преподавателями Массачусетского технологического института, практических проектов, индивидуального наставничества и от отраслевых экспертов может стать вашим шлюзом к освоению новейших инструментов и методов в области науки о данных. Программа «Прикладная наука о данных» от MIT Professional Education и «Наука о данных и машинное обучение: принятие решений на основе данных» от MIT IDSS содержат учебные программы, разработанные преподавателями Массачусетского технологического института, которые могут помочь вам достичь этого. Заинтересованы? Загрузите брошюры по программе «Прикладная наука о данных» и «Наука о данных и машинное обучение: принятие решений на основе данных».

Часто задаваемые вопросы

Что такое скрипт Python?

Сценарий Python — это набор команд, включенных в файл, предназначенный для запуска аналогично программе. Идея заключается в том, что файл будет запускаться или выполняться из командной строки или из интерактивной оболочки Python для выполнения определенного действия. Конечно, файл включает в себя методы и импортирует различные модули.

Является ли .PY скриптом?

Python — это интерпретируемый объектно-ориентированный язык программирования, а файлы PY — это программные файлы или сценарии, созданные в Python. Для его создания и изменения можно использовать текстовые редакторы, но для его выполнения требуется интерпретатор Python. Веб-серверы, а также другие административные компьютерные системы часто программируются с помощью файлов PY.

Где мы используем сценарии Python?

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

Легко ли научиться написанию сценариев на Python?

Python обычно считается одним из самых простых языков программирования для новичков. Python — прекрасная отправная точка, если вы хотите изучить язык программирования. Кроме того, это один из самых популярных языков.

12 полезных скриптов Python для разработчиков

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

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

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

  1. Создание надежных случайных паролей
  2. Извлечение текста из PDF
  3. Текстовая обработка с PANDOC
  4. Манипулирование звуком с PYDUB
  5. Текст фильтра
  6. Расположение адреса
  7. Конвертируйте CSV
  8. . images
  9. Получение контента из Википедии
  10. Создание приложений Heroku и управление ими

Эти сценарии можно вставлять практически в любой рабочий процесс или запускать как часть автоматизированного сценария с помощью такого инструмента, как Airplane.

Использование Airplane для управления и выполнения сценариев Python

Airplane — это платформа для разработчиков, позволяющая за считанные минуты преобразовывать API, SQL-запросы и сценарии во внутренние приложения. Платформа предоставляет центральное место для хранения ваших скриптов Python, а также для их безопасного запуска, управления и совместного использования.

Вы также можете использовать расписания Airplane вместо cron и других планировщиков заданий, а Airplane предоставляет разрешения, журналы аудита, потоки утверждений и многое другое из коробки.

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

Вы можете начать работу, зарегистрировав бесплатную учетную запись Airplane и перейдя по ссылке: Library > ‘+’ , чтобы создать новую задачу. Задача представляет собой один шаг или операцию, такую ​​как «обращение к конечной точке X API» или «запуск X-скрипта». Задача может быть SQL-запросом, пользовательским TypeScript/JavaScript/Python или даже оболочкой для вызова REST API.

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

Задача может быть SQL-запросом, пользовательским TypeScript/JavaScript/Python или даже оболочкой для вызова REST API.

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

Добавьте имя и описание задачи и нажмите Продолжить .

Сначала мы создадим нашу задачу, а затем развернем наш код. Нажмите Создайте задачу , чтобы завершить добавление задачи в Самолет.

Далее мы воспользуемся инструментом командной строки Airplane, чтобы написать сценарий для этой задачи. Этот инструмент позволит вам создавать сценарии и управлять ими локально на вашем компьютере.

Обязательно поместите свой код в функцию с именем main . Зависимости могут быть включены в файл requirements.txt , сохраненный в родительском каталоге вашего скрипта.

Перед развертыванием нашего скрипта Python в Airplane мы создадим yaml , содержащий имя скрипта, чтобы его было легко идентифицировать.

Например, если вы фильтруете текст с помощью регулярных выражений, вы можете назвать этот файл regex_filter.task.yaml . Объяснение определения задачи можно найти в документации по определению задачи «Самолет».

Ваш завершенный файл yaml должен выглядеть примерно так, как показано в примере ниже:

python

После создания скрипта Python и файла определения задачи yaml вы можете выполнить развертывание в Airplane с помощью интерфейса командной строки: plane deploy regex_filter.task.yaml

Теперь ваша задача Python готова к запуску!

Дополнительные сведения о начале работы можно найти в документах разработчика Airplane для Python, кратком руководстве и руководстве по началу работы с модулями Runbook.

Теперь, когда мы знаем, как использовать Airplane для управления и выполнения скриптов Python, давайте пройдемся по некоторым самим скриптам.

Сценарии Python для реализации разработчиками

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

1. Создайте надежные случайные пароли

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

python

2. Извлечение текста из PDF-файлов

Python также можно использовать для простого извлечения текста из PDF-файлов с помощью пакета PyPDF2 . Получение текста из файла PDF оказывается полезным для интеллектуального анализа данных, сверки счетов или создания отчетов, а процесс извлечения можно автоматизировать всего несколькими строками кода. Вы можете запустить pip установите PyPDF2 в свой терминал, чтобы установить пакет. Ниже приведены несколько примеров того, чего можно добиться с помощью Py2PDF2:

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

python

Возможно, вы захотите скопировать текст из двух PDF-файлов и объединить текст в новый PDF-файл. Вы можете сделать это, используя код ниже:

python

Эти и другие примеры можно найти здесь.

3. Обработка текста с помощью Pandoc

Pandoc — это полнофункциональный инструмент командной строки, который позволяет преобразовывать разметку между различными форматами. Это означает, что вы можете использовать Pandoc для преобразования текста Markdown непосредственно в docx или разметки MediaWiki в DocBook. Преобразование форматов разметки позволяет обрабатывать внешний контент или предоставленную пользователем информацию, не ограничивая данные одним форматом. Вы можете установить пакет pandoc с пипсом . Ниже приведены несколько примеров того, что вы можете сделать с pandoc .

Во-первых, предположим, что вы получили отформатированный документ markdown , но вам нужно преобразовать его в PDF. pandoc упрощает эту задачу:

python

Или, может быть, вы хотите преобразовать файл уценки в объект json . Для этого вы можете использовать следующий скрипт:

python

Вы можете найти много других примеров функций здесь или проверить 9Документация по пакету 0451 pandoc для получения дополнительной информации.

4. Работа со звуком с помощью Pydub

Pydub — это пакет Python, который позволяет вам управлять звуком, включая преобразование звука в различные форматы файлов, такие как wav или mp3 . Кроме того, Pydub может сегментировать аудиофайл на миллисекундные сэмплы, что может быть особенно полезно для задач машинного обучения. Pydub можно установить, введя pip install pydub в терминале.

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

python

Pydub имеет множество дополнительных функций, не описанных в этом примере. Вы можете найти больше из них в репозитории Pydub GitHub.

5. Фильтровать текст

Сопоставление и фильтрация текста с помощью регулярных выражений в Python — это просто, а преимущества могут быть огромными. Допустим, у вас есть система для пакетной обработки сообщений с подтверждением продажи, и вам нужно извлечь кредитную карту из текста сообщения электронной почты. Приведенный ниже скрипт может быстро найти любой номер кредитной карты, соответствующий шаблону, что позволяет легко отфильтровать эту информацию из любого текстового содержимого:

python

6. Найдите адреса

Поиск адреса может быть полезен, если вы имеете дело с доставкой или логистикой доставки или для простых задач по профилированию пользователей. Для начала установите geocoder , запустив pip install geocoder в своем терминале. Приведенный ниже скрипт позволяет легко найти координаты широты и долготы для любого адреса или найти адрес по любому набору координат:

python

7. Преобразование CSV в Excel

Вы можете часто управлять выходными файлами CSV с аналитической платформы или набора данных. Открыть CSV-файл в Excel относительно просто, но Python позволяет пропустить этот шаг вручную, автоматизировав преобразование. Это также позволяет вам манипулировать данными CSV перед преобразованием в Excel, экономя дополнительное время и усилия.

Начните с загрузки пакета openpyxl с помощью pip install openpyxl . После установки openpyxl вы можете использовать приведенный ниже сценарий для преобразования файла CSV в электронную таблицу Excel:

python

Приведенный выше скрипт является частью репозитория Awesome Python Scripts GitHub.

8. Сопоставление с образцом с помощью регулярных выражений

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

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

python

Вы можете использовать этот скрипт, если вам нужно сопоставить телефонные номера в вашем тексте:

python

Automate the Boring Stuff есть отличная глава о настройке и использовании регулярных выражений в Питоне.

9. Преобразование изображений в JPG

Формат .jpg , пожалуй, самый популярный из используемых в настоящее время форматов изображений. Вам может понадобиться преобразовать изображения из других форматов для создания активов проекта или распознавания изображений. Пакет подушка от Python упрощает преобразование изображений в формат jpg :

python

10. Сжатие изображений

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

Пример ниже уменьшит размер изображения размером 2,5 МБ до 293 КБ:

python

11. Получить содержимое из Википедии

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

Вы можете установить пакет Wikipedia, используя pip install wikipedia . Когда установка завершена, вы готовы начать.

Если вы уже знаете конкретное содержимое страницы, которое хотите извлечь, вы можете сделать это прямо с этой страницы:

python

Этот пакет также позволяет вам искать страницы, соответствующие указанному тексту:

python

12.

Создание и управление приложениями Heroku

Heroku — популярная платформа для развертывания и размещения веб-приложений. В качестве управляемой службы он позволяет разработчикам легко устанавливать, настраивать, поддерживать и даже удалять приложения через API Heroku. Вы также можете легко создавать приложения Heroku или управлять ими с помощью модулей Runbook Airplane, поскольку Airplane позволяет чрезвычайно легко обращаться к API и запускать события.

В приведенном ниже примере используется пакет heroku3 , который можно установить с помощью команды pip install heroku3 . Обратите внимание, что для доступа к платформе вам понадобится ключ API Heroku.

Подключитесь к Heroku с помощью Python:

python

После подключения к Heroku вы можете перечислить доступные приложения и выбрать приложение для прямого управления:

python

Затем следующий скрипт позволит вам создать приложение как часть runbook Airplane:

python

После создания приложения вы можете управлять им напрямую с помощью пакета heroku3 . Перейдите в репозиторий Heroku3.py GitHub для получения полного списка опций.

Начало работы

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

Лучше всего то, что вы можете использовать Airplane для беспрепятственного и безопасного управления и запуска этих сценариев. Модули Runbook для самолетов позволяют легко управлять сценариями Python и развертывать их, а также создавать многоэтапные рабочие процессы. Airplane также позволяет управлять сценариями на локальном компьютере, что позволяет использовать среду разработки для написания и тестирования сценариев перед развертыванием.

Хотя в этой статье мы рассмотрели Python, вы также можете создавать рабочие процессы в Airplane, используя Node.js или Docker для запуска сценариев оболочки.