from collections import Counter
from itertools import chain
data = [
(1, 'old;white'),
(2, 'old;green'),
(3, 'old;brown'),
(4, 'new;green'),
]
# генерирует последовательность ['old', 'white'], ['old', 'green'], ...
split_generator = (item[1].split(';') for item in data)
# генерирует последовательность 'old', 'white', 'old', 'green', ...
property_generator = chain.from_iterable(split_generator)
# исправляет регистр и удаляет пробелы - можно убрать, если не надо
property_fixed_generator = (item.strip().lower() for item in property_generator)
# поглощает данные из генераторов и считает вхождения
count = Counter(property_fixed_generator)
print(count) # Counter({'old': 3, 'green': 2, 'white': 1, 'brown': 1, 'new': 1})
import os
# выходим на верхний уровень
parentdir = os.path.dirname(os.path.dirname(__file__))
# и добавляем его к путям поиска
os.sys.path.insert(0,parentdir)
# после чего можем использовать импорт по вложенному пути
import module_name.module.ModuleFileOne
audiowaveform -i test.mp3 -o test.png -z 10000 --waveform-style bars --bar-width 3 --bar-gap 2 --bar-style rounded --no-axis-labels --amplitude-scale 1.25 --background-color 333333 --waveform-color BFBFBF
from typing import NamedTuple
class Result(NamedTuple):
text: str # текст запроса
success: bool # успешен ли запрос
status: str # статус
async def check_text(text: str) -> Result:
url = f'https://сайт.com/?query={text}'
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
if response.status != 200:
return Result(text=text, success=False, status='Не удалось определить результат')
html = await response.text()
soup = BeautifulSoup(html, 'html.parser')
status_element = soup.find('div', class_='table-block')
if not status_element:
return Result(text=text, success=False, status='Не удалось определить результат')
status_text = status_element.get_text().strip()
# тебе нужно будет решить, когда запрос был успешен (True), а когда нет (False)
if "ok" in status_text:
return Result(text=text, success=True, status='Можно')
elif "no" in status_text:
return Result(text=text, success=False, status='Данный вариант недоступен')
elif "no1" in status_text:
return Result(text=text, success=True, status='Можно под заказ')
else:
return Result(text=text, success=False, status='Неизвестно')
result = await check_text(text)
if result.success:
... # реагируем на успешный запрос
logger.info('%s: %s', result.text, result.status)
else:
... # реагируем на неудачный запрос
logger.info('%s: %s', result.text, result.status)
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
User=user # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
WorkingDirectory=/home/user/program # Директория, в которую будет осуществлён переход перед запуском
ExecStart=/home/user/program/venv/bin/python /home/user/program/webui.py
Restart=always # Всегда перезапускать скрипт при его падениях
[Install]
WantedBy=multi-user.target
/etc/systemd/system
с расширением .service
, например, /etc/systemd/system/my_program.service
.activate
для активации виртуального окружения, но вместо этого указывается полный путь к интерпретатору Python внутри этого виртуального окружения.WorkingDirectory
.Unit
в качестве After
задайте network-online.target
вместо multi-user.target
:After=network-online.target
def __getattribute__(self, name):
print(name)
return super().__getattribute__(name)
@router.message(F.text == "/lesmat")
async def lesmat(msg: Message):
await msg.answer_photo(FSInputFile("lesmat/lit1.png"))
from PIL import Image, ImageDraw, ImageFont, ImageFilter
# Откройте исходное изображение
img = Image.open('3.png')
# Создайте копию изображения
img_copy = img.copy()
# Создайте изображение с текстом на черном фоне
mask = Image.new('L', img.size, 0)
draw = ImageDraw.Draw(mask)
font = ImageFont.truetype('3.ttf', size=54)
text_position = (297, 553)
draw.text(text_position, 'Your Text', font=font, fill=255)
# Размойте маску
blurred_mask = mask.filter(ImageFilter.GaussianBlur(10)) # Измените радиус размытия по вашему усмотрению
# Примените размытие к фону
img_copy.paste(img_copy.filter(ImageFilter.GaussianBlur(10)), (0, 0), blurred_mask)
# Наложите текст на размытый фон
draw = ImageDraw.Draw(img_copy)
draw.text(text_position, 'Your Text', font=font, fill=('#00bc44'))
# Сохраните результат
img_copy.save('output.png')
как перенаправить информацию из вывода команд в файл, который создается в процессе проверки командой
#touch $( date '+%Y-%m-%d_%H-%M' )
…
file=$( date '+%Y-%m-%d_%H-%M' )
touch "$file"
…
echo -e " Product Name : $PN_FRU" >> "$file"
…