Код python пример скрипта

Пишем простой скрипт на Python

Здарова, щеглы, сегодня мы своими руками будем писать скрипт на Python. Нам понадобятся: интерпретатор Python 3 под «какая-там-у-вас-ОС», текстовый редактор с подсветкой синтаксиса, например, Sublime Text, Google, упаковка прамирацетама, бутылка минеральной воды и 60 минут свободного времени.
Перед тем как писать скрипт, мы должны определиться, что он вообще будет делать. Делать он будет следующее: получив на вход домен и диапазон IP-адресов, многопоточно проходить список этих адресов, совершать HTTP-запрос к каждому, в попытках понять, на каком же из них размещен искомый домен. Зачем это нужно? Бывают ситуации, когда IP-адрес домена закрыт Cloudflare, или Stormwall, или Incapsula, или еще чем-нибудь, WHOIS история не выдает ничего интересного, в DNS-записях такая же канитель, а, внезапно, один из поддоменов ресолвится в адрес из некоторой подсети, которая не принадлежит сервису защиты. И в этот момент нам становится интересно, вдруг и основной домен размещен в той же самой подсети.

Погнали, сразу выпиваем половину бутылки воды, и пишем следующий код:

Ни одного комментария, какие-то import, непонятные аргументы командной строки и еще эти две последние строчки. Но будьте спокойны, все нормально, это я вам как мастер программирования на Python с 30-минутным стажем говорю. Тем более, как известно, Google не врет, а официальная документация по Python — это вообще неоспоримая истина.
Так что же мы все-таки сделали в вышеописанном фрагменте кода? Мы подключили модули для работы с аргументами коммандной строки, модули для логирования (потокобезопасные между прочим!), модуль для работы с SSL (для одной мелочи, связанной с HTTPS-запросами), модуль для создания пула потоков, и, наконец, модули для совершения HTTP-запросов, работы с IP-адресами и двухсторонней очередью (по поводу различных типов импорта можно почитать здесь).
После этого мы, в соответствии с документацией по модулю argparse, создали вспомогательную функцию, которая будет обрабатывать аргументы, переданные скрипту при запуске из командной строки. Как видите, в скрипте будет предусмотрена работа со списком доменов/IP-диапазонов, а также возможность фильтрации результатов по ключевым словам и по кодам состояния HTTP и еще пара мелочей, как, например, смена User-Agent и опциональная проверка HTTPS-версии искомого ресурса. Последние две строки в основном используются для разделения кода, который будет выполнен при запуске самого скрипта и при импортировании в другой скрипт. В общем тут все сложно, все так пишут. Мы тоже так будем писать. Можно было бы немного модифицировать этот код, например, добавив возврат разных статусов системе в зависимости от того, как отработала функция main, добавить argv в качестве аргумента, и так далее, но мы изучаем Python только 10 минут и ленимся вчитываться в документацию.

Читайте также:  Define null in python

Делаем перерыв и выпиваем глоток освежающей минеральной воды.

Источник

Скрипты python #

Написание и запуск скриптов — второй способ взаимодействия с python , который будет здесь рассмотрен. Python скрипт (программа) — файл с исходным кодом python , который может быть проинтерпретирован интерпретатором. Исходный код в скрипте всегда исполняется сверху вниз, начиная с первой строки и заканчивая последней (если по пути не встретилось принудительного завершения исполнения программы). В этом отношении все очень похоже на C/C++ , за исключением точки входа: в python это самое начало скрипта, в C++ — функция main .

Итого, запустить python скрипт почти полностью эквивалентно тому, чтобы поочереди вбить все инструкции внутри скрипта в интерактивную оболочку. Использовано выражение “почти полностью эквивалентно” из-за уже упомянутой функции quit() , а также из-за особенностей взаимодействия интерактивной оболочки со стандартным потоком вывода.

Принято сохранять файлы с исходным кодом python в файлы с расширением .py .

Hello, World!#

Напишем первый скрипт на python . По традиции это будет программа, печатающая строку “Hello, World!” в стандартный поток вывода.
Для такой программы в python достаточно файла из всего одной строки.

Если сохранить эту инструкцию в файл с названием helloworld.py , то его можно запустить следующей командой в командной строке или Anaconda prompt .

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

Стандартные потоки ввода и вывода#

Из примера helloworld.py можно заметить, что для вывода строки “Hello, World!” в стандартный поток вывода используется функция print. Тут и проявляется незначительная разница с интерактивной оболочкой, в которой результат вычисления выражения сразу и выводится в стандартный поток вывода, если он не присваивается в переменную. В случае скриптов такого не происходит и необходимо явно вызывать функцию print , чтобы что-то вывести в стандартный поток вывода.

Читайте также:  Python календарь рабочих дней

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

  • поток вывода (параметр file , по умолчанию стандартный поток вывода);
  • разделитель значений (параметр sep , по умолчанию пробел » » );
  • завершающая строка (параметр end , по умолчанию перенос строки «\n» ).

За взаимодействие со стандартным потоком ввода отвечает функция input, которая считывает одну строку из стандартного потока ввода и возвращает её в неизменном виде. Чтобы продемонстрировать принцип действия этой функции, слегка модифицируем предыдущий пример, чтобы он спрашивал имя пользователя и приветствовал его по введенному имени.

print("Hello, what is your name?") name = input() print("Hi, ", name, "!", sep="") 

Сохранив и запустив этот скрипт, вы должны увидеть сообщение «Hello, what is your name?» , после которого программа должна войти в режим ожидания, т.к. запустилось исполнение функции input() , а в стандартном потоке ввода нет строки, которую эта функция смогла бы считать. После того как вы наберете своё имя и нажмете клавишу Enter , строка с вашим именем попадёт в стандартный поток ввода и функция input() вернет эту строку вызывающему коду. Далее эта строка выведется между строками «Hi» и «!» с разделителем в виде пустой строки (параметр sep ) с помощью функции print .

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

name = input("Hello, what is your name?\n") print("Hi, ", name, "!", sep="") 

Теперь обратим внимание на то, что функция input всегда возвращает именно строку — значение типа str . Т.е. если вы считываете число, то его необходимо явно преобразовать к необходимому числовому типу. Для демонстрации рассмотрим программу, которая спрашивает возраст пользователя и сообщает пользователю его возраст через один год.

age = int(input("What is your age? ")) print("In a year you are going to be ", age + 1, " years old!", sep="") 

В первой строке программы у пользователя спрашивается его возраст и введенное им значение приводится к типу int . Во второй строке выводится сколько ему будет лет по прошествии одного года. При этом обратите внимание, что выражение age + 1 привело бы к ошибке, если бы мы не привели age к целочисленному типу конструктором типа int. Но при передаче age + 1 в функцию print вовсе не обязательно приводить целочисленное значение к строковому, т.к. функция print это сделает за нас.

Читайте также:  Python socket get request

Среды разработки#

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

  • PyCharm — одна из самых популярных полноценных сред разработки для python . Даже в бесплатную версию Community Edition встроенно большинство необходимых разработчику инструментов.
  • Visual Studio Code — бесплатная сравнительно легковесная среда разработки, которая с помощью расширений может быть задействована и для разработки на python .
  • Spider — бесплатная среда разработки для python , специально нацеленная на ученных. Распространяется вместе с Anaconda , но можно скачать и отдельно.

Автор курса в основном пользуется VS Code , так как она быстро загружается и её функционала обычно хватает, но в масштабных проектах иногда отдаёт предпочтение PyCharm . Для самых начинающих можно порекомендовать Thonny — легковесную среду разработки, которая позволяет наглядно пошагово визуализировать процесс исполнения программы, что может оказаться полезным при изучении принципов работы языка.

Области применения скриптов#

Скрипты — самая основная форма взаимодействия с python : большинство программ на python реализуется в виде скриптов, так как исходный код из скриптов можно переиспользовать (можно писать программы в модульной структуре), скриптами и их версиями можно управлять с помощью системы управления версиями и т.д.

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

Python в качестве калькулятора

Блокноты. Jupyter Notebooks

Источник

Оцените статью