Простой способ извлечения изображений из документов MS и Libre Office
Стандарт Open Document стал де-факто уже давно. И если раньше формат документов Microsoft Office был проприетарным, то теперь он представляет собой «.zip»-файл в котором храниться множество «.xml», а также изображения и прочие файлы. Конечно же, самым простым способом извлечь документы является изменение расширения документа на «.zip» и последующее извлечение файлов любым архиватором. Но, если вам нужно сделать это не с одним документом, это может быть достаточно продолжительно по времени. Поэтому, давайте рассмотрим несколько способов, с помощью которых можно извлечь изображения из файлов формата ".docx", ".xlsx", ".pptx", ".odp", ".ods", ".odt".
Способ №1: используем стандартные библиотеки python
Для данного способа не требуется установка сторонних библиотек. Достаточно тех, что поставляются в комплекте с самим интерпретатором.
Создадим файл extract.py.
Импортируем нужные нам в процессе работы библиотеки:
Создадим функцию image_extract(in_zip: zipfile, out_dir: Path), в которую будем передавать zip-файл, а также путь к директории в которую будут распакованы изображения. В данном случае путь у пользователя запрашиваться не будет.
Объявим переменную cnt, которая будет счетчиком распакованных изображений. Затем в цикле пробежимся по списку содержимого архива. Проверим расширения файлов в архиве. И если они совпадают с расширениями из списка, будем читать текущий файл с изображением и сохранять в байтовом режиме в директорию, которая передается в функцию. Также, данная директория создается автоматически и называется именем исходного документа. После того, как все изображения будут сохранены, возвращаем из функции наш счетчик.
Осталось дело за малым, запросить у пользователя путь к файлу, проверить, является ли он файлом и имеет ли нужный формат. После чего скопировать файл с расширением «.zip», открыть с помощью zipfile и передать в функцию для поиска изображений и их распаковки. Ну и напоследок удалить скопированный zip-файл.
После окончания извлечения изображений вывести сообщение пользователю о том, сколько файлов было извлечено и в какую директорию.
Полный код скрипта:
Протестируем созданный скрипт. У нас есть, для примера документ «CustomTkinter.docx». В нем содержаться несколько изображений. Вот их мы и попробуем извлечь.
Запускаем скрипт, указываем путь к документу и получаем папку с названием документа, в которой содержаться изображения.
Способ №2: используем библиотеку docx2txt
Создадим файл docx2im.py. В данном случае мы будем использовать стороннюю библиотеку docx2txt. Для ее установки пишем в терминале или командной строке:
Теперь импортируем нужные библиотеки в скрипт.
В данном случае нам не понадобиться создавать дополнительных функций. Сделаем все в одной. Хотя, в теории, можно было бы разделить извлечение изображений и текста. Да, дополнительным бонусом, при том, что извлекаются изображения только из документов «.docx», является извлечение текста.
Для начала запросим у пользователя путь к документу и путь к папке для извлечения изображений. Проверим, является ли переданный параметр путем к документу и является ли расширение данного документа «.docx». Затем проверим, существует ли директория для извлечения изображений. Если нет, создадим ее, так как docx2txt ее самостоятельно не создает.
Теперь передаем путь к документу и путь для извлечения изображений в функцию process данной библиотеки. Из нее будет возвращен текст документа. Проверим, содержится ли в переменной text что-нибудь. Для этого обрежем пробелы и знаки переноса каретки, так как, если в документе нет текста, но есть пустая строка, переменна text не будет пуста.
Затем открываем текстовый документ на запись и записываем в него полученный текст.
Этот способ достаточно простой, но, как вы уже поняли, извлекать изображения из других форматов документов он не умеет.
Думаю, что вышеприведенных скриптов будет достаточно. Можно использовать также библиотеку aspose-words, которая устанавливается с помощью команды:
pip install aspose-words
Однако, способ извлечения с ее помощью изображений не особо отличается от предыдущих. Создадим файл aspose_extract.py. Вот для примера код:
Выбирать, что использовать вам и в каком виде, конечно же, вам. Здесь описаны только несколько способов, с помощью которых можно проделать данную операцию. Скорее всего, если поискать более тщательно, найдется еще множество библиотек, с помощью которых можно извлечь изображения из документов.
А на этом все. Спасибо за внимание.
Надеюсь, данная информация будет вам полезна.
Получаем валюту, язык и код страны используя библиотеку countryinfo на Python
Всем привет) сегодня хочу рассказать про библиотеку countryinfo которая предназначена для получения информации о странах и регионах. Она позволяет получить данные о флагах, столицах, валютах, языках и других характеристиках стран. Будет полезна для персонализации данных ваших пользователей.
Итак, предположим что пользователь вводит страну и нам нужно узнать код страны, язык, валюту, чтобы дополнительно не опрашивать пользователя.
Тут на помощь придет библиотека countryinfo, давайте установим ее. Для установки выполните в командной строке:
pip install countryinfo
или если у вас не установлен pip то введите следующие команды:
git clone https://github.com/porimol/countryinfo.git
cd countryinfo
python setup.py install
После успешной установки программы создадим новый файл и импортируем библиотеку
from countryinfo import CountryInfo # импорт библиотеки
Дальше запрашиваем у пользователя ввод его страны. Затем, на основе введенной пользователем страны, создается объект CountryInfo, который содержит информацию об этой стране.
country = input('Введите страну: ') # указываем в переменной country страну
country = CountryInfo(country) # создаем объект
Теперь мы можем получить все данные, давайте с помощью команд: country.currencies() , country.languages(), country.iso() получим код валюты страны, официальный язык, и код ISO (вернет iso значение в двух форматах alpha2 и alpha3)
print("Официальный язык: ", *country.languages())
print("Тикер валюты: ", *country.currencies())
print("Код ISO: ", country.iso())
Далее запускаем код, вводим название страны на английском и смотрим результаты:
В данном примере получили данные для Алжира. Код готов!
Также стоит дополнить что это лишь малая часть данных которую мы можем вывести о стране, можно получать код телефона и другую информацию.
Подробная инструкция по работе с библиотекой: Github
Приглашаю подписаться на мой канал по программированию на python: https://t.me/python_scrypt там вы найдете полезные материалы, обзор библиотек и многое другое!
React. Сборник рецептов
Автор: Дон Гриффитс, Дэвид Гриффитс
Год: 2023
Количество страниц: 530
Книга посвящена практическому применению фреймворка React. Описано создание простых приложений и приложений со сложным интерфейсом, рассмотрены вопросы маршрутизации в приложениях и управление их состоянием. Даны примеры реализации интерактивного взаимодействия с пользователем, подключения к различным службам бэкенда, таким как REST и GraphQL, описана работа с библиотеками компонентов. Подробно рассматривается безопасность приложений, процесс их тестирования, даны советы по обеспечению доступности. Приводятся практические рекомендации по повышению производительности и созданию прогрессивных веб-приложений.
Как сделать FRP и удалить Гугл аккаунт на самсунге А30S
Сбросил телефон до заводских, не знаю ни почты, ни пароля
ЧПУ. Переменные и синтаксис параметрического (макро) программирования
Я тут частенько писал про параметрическое программирование. Примеры есть в моих постах, а вот шпаргалка под рукой никогда не помешает. Даже мне.
Итак, буду краток:
Арифметические операции
+ Сложение.
Синтаксис: [#A+#B]
- Вычитание.
Синтаксис: [#A-#B]
* Умножение.
Синтаксис: [#A*#B]
/ Деление.
Синтаксис: [#A/#B]
^ Возведение в степень
MOD Оператор используется для деления двух чисел и возвращает только остаток от деления. Любые числа с плавающей запятой предварительно округляются до целого.
Синтаксис: #100=[37 MOD 30] Переменная #100 будет содержать число 7.
Логические функции
OR Логическое ИЛИ. Оператор используется для проверки того, выполняется ли одно из двух условий. Если значение левого операнда истинно, или значение правого операнда истинно, или оба значения истинны, то логический оператор ИЛИ возвращает TRUE. В противном случае он вернет FALSE.
Синтаксис: #C=[#A OR #B]
XOR Логическая операция исключающее ИЛИ (ИЛИ-НЕ) выполняется с двумя битами (A и B). Результат выполнения логической операции XOR будет равен 1 (единице), если один из битов A или B равен 1 (единице), во всех остальных случаях, результат равен 0 (нулю).
Синтаксис: #C=[#A XOR #B]
AND Логическая операция И. Всё выражение считается истинным, только если истинен каждый операнд — каждое из составных выражений. Иными словами, AND, означает «и то, и другое».
Синтаксис: #C=[#A AND #B]
Логические или условные операторы
EQ = — Равно.
Синтаксис: [#A EQ #B]
NE ≠ — Неравно.
Синтаксис: [#A NE #B]
GT > — Больше.
Синтаксис: [#A GT #B]
LT < — Меньше.
Синтаксис: [#A LT #B]
GE ≥ — Больше либо равно.
Синтаксис: [#A GE #B]
LE ≤ — Меньше либо равно.
Синтаксис: [#A LE #B]
Тригонометрические функции
SIN Функция синуса.
Синтаксис: #C=SIN[#B]
COS Функция косинуса.
Синтаксис: #C=COS[#B]
TAN Функция тангенса.
Синтаксис: #C=TAN[#B]
ATAN Функция котангенса (арктангенса).
Синтаксис: #C=ATAN[#B]
ASIN Функция арксинуса.
Синтаксис: #C=ASIN[#B]
ACOS Функция арккосинуса.
Синтаксис: #C=ACOS[#B]
Функции округления чисел
ROUND Функция округляет число в большую сторону, если следующая цифра после запятой больше или равна 5. В противном случае число округляется в меньшую сторону.
Синтаксис: #C=ROUND[#B];
FIX Функция округляет число в меньшую сторону.
Синтаксис: #C=FIX[#B];
FUP Функция округляет число в большую сторону.
Синтаксис: #C=FUP[#B];
Дополнительные функции
SQRT Квадратный корень.
Синтаксис: #C=SQRT[#B]
ABS Функция, возвращающая абсолютное значение числа.
Синтаксис: #C=ABS[#B]
LN Функция возвращает натуральный логарифм вещественного числа Х. Число Х должно быть положительным — иначе случится ошибка времени выполнения.
EXP Функция возвращает экспоненциальное значение параметра с плавающей запятой.
Условное выполнение одиночной макрокоманды
IF «Если» — Оператор условия позволяет выполнять различные действия с условием. После оператора IF указывается некоторое выражение. Если это выражение оказывается истинным (true), то выполняется команда (например, команда безусловного перехода), находящаяся в одном кадре с IF. Если выражение оказывается ложным (false), то команда, находящаяся в одном кадре с IF, не выполняется, а управление передается следующему кадру.
Синтаксис: IF [#A GT #B] GOTO #C;
THEN «Тогда» — Оператор выполнения определённой команды только при условии истинности (true) некоторого логического выражения в конструкции IF.
Синтаксис: IF [#A GT #B] THEN #A=#C;
Циклы
WHILE Цикл с условным выражением, выполняется до тех пор, пока истинно (true) указанное условие. Если условие сразу ложно (false), цикл даже не начнёт свою работу и будет полностью пропущен, а управление перейдёт к кадру размещённому за END n
Синтаксис:
WHILE [Условное выражение>] DO n
...
<Исполняемый код>
...
END n
...
<Исполняемый код>
...
Где n идентификационный номер, может быть 1,2 или 3. Если используется номер, кроме 1, 2 и 3, то возникает сигнал тревоги P/S ном. 126.
Идентификационные номера (1-3) в цикле DO-END могут использоваться неограниченное количество раз. Тем не менее, обратите внимание на то, что если программа включает пересекающиеся циклы повтора (перекрывающиеся диапазоны DO), то возникает сигнал тревоги P/S ном. 124.
Идентификационные номера (1-3) могут использоваться неограниченное количество раз.
Диапазоны DO не могут перекрещиваться.
Циклы DO могут быть вложены до трех уровней.
Управление может переносится за пределы цикла.
Нельзя выполнить переходы к позиции внутри цикла.
Если выполняется переход к номеру последовательности, заданный оператором перехода GOTO, то осуществляется поиск номера последовательности. По этой причине обработка данных в обратном направлении занимает больше времени, чем обработка данных в прямом направлении. Использование оператора цикла WHILE для выполнения повторов сокращает время на обработку данных.
DO Начало цикла.
END Конец цикла. Если выражение в конструкции WHILE не истинно, то управление передается кадру, следующему за END
Ветвления и переходы
GOTO Происходит переход к номеру последовательности n. Если задан номер последовательности, не входящий в диапазон от 1 до 99999, то возникает сигнал тревоги P/S ном. 128. Для ввода номера последовательности также можно использовать выражение.
GOTO n; – Безусловный переход к кадру n, где n: номер последовательности (от 1 до 99999);
GOTO #10; — Вычисляемый переход к кадру, установленному переменной #10.
Синтаксис: GOTO 100
GOTO [Выражение]
ПЕРЕМЕННЫЕ
#0 Эта переменная всегда нулевая. Этой переменной нельзя присвоить никакого значения.
#1 – #33 Локальные переменные могут использоваться только внутри макропрограммы и содержат такие данные, как, например, результаты операций. При отключении питания локальные переменные обнуляются. При вызове макропрограммы локальным переменным присваиваются аргументы.
#100 – #199
#500 – #999 Общие переменные могут совместно использоваться в различных макропрограммах. При отключении питания переменные от #100 до #199 обнуляются. В переменных от #500 до #999 данные хранятся даже при отключении питания.
#1000 – #99999 Системные переменные используются для чтения и записи различной системной информации – данных о позиции инструмента, величинах компенсации, времени и др.
Диапазон значений
переменных Локальные и общие переменные могут иметь значение 0 или значение в следующих диапазонах:
от -1047 до -10-29
от 10-29 до 1047
Сможете найти на картинке цифру среди букв?
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi