Восемь функций «без кода» в Python

Иногда вам не нужно писать код для использования Python.

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

Впрочем, это еще не самое простое. Можете ли вы поверить, что мы можем использовать Python даже без кода?

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

0. Интерфейс командной строки Python «-m»

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

Пока на нашем компьютере установлен Python, мы можем отображать все поддерживаемые аргументы в Python CLI.

$ python --help

На снимке экрана показана только часть вывода справки, поскольку она слишком длинная. Я хочу подчеркнуть вариант -m. Он запустит библиотечный модуль как скрипт. Поэтому, если модуль реализован для поддержки CLI, мы сможем использовать его напрямую.

Теперь надо начинать :)

1. Тестирование номера порта без Telnet

Иногда нам нужно протестировать исходящий сетевой трафик на IP:Port. Обычно telnet — неплохой выбор, особенно на платформе Windows. Однако он часто не устанавливается по умолчанию. Мы должны загрузить и установить его перед использованием, что может быть пустой тратой времени, если мы просто хотим провести простой тест, а затем избавиться от него.

Однако, если у вас установлен Python, вам не нужно загружать telnet, потому что он уже есть в Python. Давайте попробуем IP-адрес поиска Google для его порта 443.

python -m telnetlib -d 142.250.70.174 443

Как видно на скриншоте, с трафиком все в порядке, и мы даже получили пустую строку от Google. Если мы попытаемся подключиться через telnet к случайному порту, к которому у нас нет доступа, будет выдана ошибка.

python -m telnetlib -d 142.250.70.174 999

2. Запустите веб-сервер

Если вы не знали этого раньше, я думаю, это могло бы удивить. Да, мы можем запустить веб-сервер с помощью Python без написания кода. Просто запустите команду следующим образом.

python -m http.server

После запуска он показывает, что сервер прослушивает локальный хост на порту 8000. Затем мы можем попытаться получить доступ к http://localhost:8000/ из нашего браузера.

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

Вы спрашиваете, для чего это используется? Например, если у нас есть много файлов text/PDF/image в каталоге или любых подкаталогах, мы можем очень легко и быстро получить к ним доступ.

Если вы хотите узнать более интересное использование, пожалуйста, ознакомьтесь с этой статьей.



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

3. Проверка и улучшение JSON

Если у вас есть длинная строка JSON без форматирования, ее может быть трудно прочитать. Обычно я бы предпочел использовать текстовые редакторы, такие как Sublime или код VS с плагинами JSON, чтобы сделать строку красивой. Однако, если у нас нет под рукой этих инструментов, Python сможет временно помочь.

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

echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'

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

echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}' | python -m json.tool

Ой! Строка JSON недействительна, и json.tool помогла нам определить проблему. Мы пропустили запятую после имени объекта. Позвольте мне добавить запятую, чтобы сделать его действительным.

echo '{"name": {"first_name":"Chris", "last_name":"Tao"}, "age":33}' | python -m json.tool

Теперь он выводится с идеальным отступом! Теперь легко читать.

4. Создание текстового редактора

Да, мы можем использовать Python для «создания» текстового редактора. Конечно, он не очень мощный, но будет удобен, если у вас не установлен более качественный. Кроме того, он не будет более мощным, чем Vim и Nanos, но он полностью основан на пользовательском интерфейсе, а не на текстовом редакторе командной строки. Этот редактор создан idlelib с помощью Tkinter, так что он даже кроссплатформенный.

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

mkdir get_time_app
python -m idlelib get_time_app/print_time.py

idlelib не может создать каталог, если он не существует, поэтому нам нужно создать его, если он нам нужен. После запуска этой команды файл print_time.py НЕ будет создан, пока мы его не сохраним.

Теперь должен появиться редактор. Мы можем написать в нем код. Код может быть даже окрашен синтаксис.

Теперь мы можем нажать ctrl+s, чтобы сохранить его, а затем закрыть. Вернемся к командной строке и отобразим содержимое файла, код там точно есть.

cat get_time_app/print_time.py

5. Создание исполняемого приложения

Если мы просто хотим создать простое приложение, подобное тому, которое мы только что написали выше, нам не нужны сторонние библиотеки, такие как PyInstaller. Встроенный в Python Zipapp может помочь.

Предположим, мы хотим упаковать приложение «Получить время», мы можем запустить команду ниже.

python -m zipapp get_time_app -m "print_time:main"

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

Приложение с расширением .pyz — это приложение, которое мы только что создали. Мы можем распространять его как один файл, а не как папку.

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

python get_time_app.pyz

6. Кодирование и декодирование строки или файла

С помощью Python CLI мы можем зашифровать строку или файл. Начнем с интересного. Rot 13 — это метод шифрования, который просто перемещает любые английские буквы на 13 позиций вправо. Например, «a» (позиция: 1) станет «n» (позиция: 14).

Мы можем использовать encodings.rot_13 для шифрования строки следующим образом.

echo "I am Chris" | python -m encodings.rot_13

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

echo 'V nz Puevf' | python -m encodings.rot_13

Теперь давайте посмотрим на более полезный, base64. Мы можем закодировать строку в формате base64 следующим образом.

echo "I am Chris" | python -m base64

Затем мы можем добавить флаг -d для его декодирования.

echo "SSBhbSBDaHJpcwo=" | python -m base64 -d

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

python -m base64 get_time_app/print_time.py

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

echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKCgpkZWYgbWFpbigpOgogICAgY3VycmVudF90aW1lID0gZGF0ZXRpbWUubm93KCkKICAgIHByaW50KGYnQ3VycmVudCB0aW1lIGlzIHtjdXJyZW50X3RpbWV9LicpCgoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgIG1haW4oKQo=" | python -m base64 -d | python

7. Получить системные метаданные

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

python -m sysconfig

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

Если мы просто хотим отобразить пути и текущий рабочий каталог, мы также можем запустить эту команду.

python -m site

8. Сжатие файлов

Мы также можем использовать Python для сжатия файлов без необходимости загрузки tar/zip/gzip. Например, если мы хотим сжать приложение, которое мы только что написали в разделе 4, мы можем запустить следующую команду, чтобы добавить папку в zip-файл. В команде опция -c означает «создать».

python -m zipfile -c get_time_app.zip get_time_app

Конечно, мы можем извлечь и его. Давайте извлечем папку и поместим ее в новый каталог, чтобы ее можно было отделить от исходной. В приведенной ниже команде параметр -e означает «извлечь».

python -m zipfile -e get_time_app.zip get_time_app_extracted

Тогда мы сможем это проверить.

ls get_time_app_extracted
cat get_time_app_extracted/get_time_app/print_time.py

Я использую zip для демонстрации, а Python также поддерживает tar и gzip.

Краткое содержание

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



Если вы считаете, что мои статьи полезны, подумайте о том, чтобы присоединиться к Medium Membership, чтобы поддержать меня и тысячи других писателей! (Нажмите на ссылку выше)