TGTGInsighttelegram intelligenceLIVE / telegram public index
Назад кон каналите
Python Заметки avatar

TGINSIGHT CHAT

Python Заметки

@pythonotes

Education

Интересные заметки и обучающие материалы по Python Контакт: @paulwinex ⚠️ Рекламу на канале не делаю!⚠️ Хештеги для поиска: #tricks #libs #pep #basic #regex #qt #django #2to3 #source #offtop

Претплатници2,220Тековни претплатници
Следени објави384Број на индексирани објави
Неодамнешен опфат2,205Збир на неодамнешни прегледи
Неодамнешни објави

Неодамнешни објави

Ознака: #libs · 124 објави

当前筛选 #libs清除筛选

Објавено 23 мар.

В стандартной библиотеке Python есть поддержка нескольких текстовых форматов файлов. Я имею в виду общепринятые форматы хранения текстовых данных. Чаще всего это конфигурационные файлы. И вот что может читать Python из коробки: 🔸JSON (JavaScript Object Notation) Модуль json Один из лидеров по популярности. Используется во многих сферах, от простых конфигов до протоколов передачи данных. Формат простой и понятный. Очень похож на простой Python-код. https://ru.wikipedia.org/wiki/JSON https://www.json.org/ 🔸CSV (Comma-Separated Values) Модуль csv Формат описания табличных данных. Его используют аналитики, датасаентисты и Exel-мастера. Что-то вроде текстовой базы данных. https://ru.wikipedia.org/wiki/CSV https://www.w3.org/TR/tabular-data-primer/ 🔸XML (eXtensible Markup Language) Модуль xml Самый популярный формат в WEB, так как любая HTML страница (то есть все страницы в сети) это XML. Многие программы используют эту разметку для сохранения данных. Удобный формат многоуровневой вложенности объектов с атрибутами. https://www.xml.com/ https://ru.wikipedia.org/wiki/XML 🔸INI (Initialization file) Модуль configparser Очень простой формат конфига для Windows с возможностью группировать параметры. Мало популярен, но в простых случаях вполне подходит. https://ru.wikipedia.org/wiki/.ini Есть еще один популярный формат для конфигов, но к сожалению не в стандартной поставке. Я решил его тоже упомянуть. 🔹YAML (Yet Another Markup Language) В основном используется для конфигов. https://ru.wikipedia.org/wiki/YAML https://yaml.org/ Установка: pip install pyyaml ___________ Конечно же существуют и другие форматы. CFG или CONF (парсер для него был в стандартной библиотеки Python2 в модуле ConfigParser), TOML и другие. Но в большинстве случаев стандартно поддерживаемых форматов хватает чтобы закрыть все потребности. #libs

527 views

Hashtags

Објавено 14 мар.

В посте про правильное использование аргумента shell упоминалось что в некоторых случаях атрибуты следует отправлять списком а не строкой. Что делать, если команда приходит именно строкой? Как её преобразовать в список? Ответ очевиден >>> cmd_str = 'ls -sl' >>> cmd_lst = cmd_str.split(' ') >>> print(cmd_lst) ['ls', '-sl'] Но что, если команда имеет более сложный вид в плане пробелов? >>> cmd_str = 'mkdir "My Folder Name"' >>> print(cmd_str.split(' ')) ['mkdir', '"My', 'Folder', 'Name"'] Определённо что-то пошло не так! Имя директории содержит пробелы, поэтому весь путь взят в кавычки. Нам определённо не надо её разделять на аргументы. Чтобы сделать всё правильно нам потребуется распарсить строку чтобы обнаружить, что там в кавычках а что нет. Но в стандартной поставке Python давно уже есть готовое решение, моудль shlex (shell lexical analyzers) который всё это умеет. >>> import shlex >>> shlex.split('mkdir "My Folder Name"') ['mkdir', 'My Folder Name'] Теперь команда сработает верно. И не переживайте что кавычки пропали, subprocess сам всё разрулит с пробелами 😎. На Windows всё аналогично. #libs

598 views

Hashtags

Објавено 8 мар.

Всё начиналось с библиотеки six, что означает цифру 6 и является результатом умножения 2*3 (напомню что six это библиотека для написания кода одновременно совместимого для Python 2 и 3). Но как обычно всегда найдется тот, кому не всё понравится и он напишет свой вариант) В итоге получаем небольшой ряд "числовых" библиотек примерно для одного и того же https://pypi.org/project/six/ https://pypi.org/project/eight/ https://pypi.org/project/nine/ Выглядит забавно. Я решил проверить, есть ли другие библиотеки с числом в названии, хотя бы до 20. И вот что нашлось: https://pypi.org/project/one/ https://pypi.org/project/two/ https://pypi.org/project/three/ four - свободно https://pypi.org/project/five/ https://pypi.org/project/six/ https://pypi.org/project/seven/ https://pypi.org/project/eight/ https://pypi.org/project/nine/ ten - свободно https://pypi.org/project/eleven/ https://pypi.org/project/twelve/ thirteen - свободно fourteen - свободно fifteen - свободно https://pypi.org/project/sixteen/ seventeen - свободно nineteen - свободно twenty - свободно Назначения у этих проектов, конечно, разные. Есть и заброшенные и популярные. Но места еще есть 😊 Занимаем пока свободно! PS. Всех уделал Em Fresh со своей линейкой Python-альбомов😁 (жмакнуть show more) PPS. Всех читательниц моего канала поздравляю с праздником 🌼🥳💐 #offtop#libs#2to3

606 views

Објавено 26 јан.

Правильно ли вы используете аргумент shell у методов subprocess? Вкратце опишу разницу состояний этого аргумента. (полный разбор — тема для статьи в блоге, возможно позже) Флаг "shell" определяет, будет ли использоваться системный шел как основной исполняемый файл для вызова вашей команды. ⏩ shell=True - К вашей команде добавится исполняемый файл /bin/sh или cmd.exe - Ваша команда будет аргументом флага -с, поэтому команду нужно передавать строкой - Команду необходимо передавать с готовым экранированием и лексическим разбором пробелов. ✅ Правильно: subprocess.check_output('ls -sl', shell=True) Команда выглядит так: /bin/sh -c "ls -sl" Здесь видно, что мы передаём значение аргумента -c а не саму команду. ❌Неправильно subprocess.check_output(['ls', '-sl'], shell=True) Команда выглядит так: /bin/sh -c "ls" -sl Ошибки не будет, но аргументы используются неверно. Получите не то что ожидаете. ⏩ shell=False - команду нужно передать списком - ожидается, что первым аргументом будет исполняемый файл - будет запущен непосредственно файл из первого аргумента, без /bin/sh или cmd.exe - автоматическое экранирование пробелов в аргументах списка ✅Правильно subprocess.check_output(['ls', '-sl'], shell=False) Команда будет выглядеть так ls -sl ❌Неправильно subprocess.check_output('ls -sl', shell=False) Эта команда завершится ошибкой: No such file or directory То есть система пытается найти файл "ls -sl" а не файл "ls" А также, если не используется shell то путь к исполняемому файлу требуется писать абсолютным, даже стандартные системные утилиты. ___________________ - для Windows всё аналогично - для других методов из subprocess всё аналогично #tricks#libs

474 views

Hashtags

12•••91011
ПретходнаСтраница 11 од 11Следна