Search
Write a publication
Pull to refresh
89
76
Алексей Яковенко @yakvenalex

Опытный python разработчик с многолетним стажем.

Send message

Простой способ конвертации файлов JSON в CSV через Python

Для конвертации файлов JSON в CSV через Python существует удобный способ с использованием библиотеки pandas.

Если у вас еще не установлена библиотека pandas, установите ее с помощью pip:

pip install pandas

Далее напишем функцию, которая будет принимать на вход путь к JSON файлу и имя выходного CSV файла. Эта функция выполнит преобразование с помощью pandas.

import pandas as pd


def json_to_csv(input_file, output_file):
    try:
        # Прочитайте JSON файл в DataFrame
        df = pd.read_json(input_file)
        
        # Сохраните DataFrame в CSV файл с кодировкой UTF-8
        df.to_csv(output_file, index=False, encoding='utf-8')
        print(f"JSON файл успешно преобразован в CSV и сохранен как {output_file}")
    except Exception as e:
        print(f"Произошла ошибка при преобразовании: {e}")

        
# Пример использования функции
json_to_csv('input.json', 'output.csv')

Теперь, вызвав функцию json_to_csv с нужными параметрами, вы сможете легко преобразовать JSON файл в CSV файл.

Если вам была полезна эта информация, подписывайтесь, ставьте лайки и оставляйте комментарии!

Tags:
Total votes 1: ↑1 and ↓0+3
Comments1

Самый быстрый и простой способ развернуть докер контейнер со своим Python проектом.

Привет. Для того чтоб воспользоваться данным способом у вас должен быть:

  1. VPS сервер

  2. Написанный Python проект

  3. Установленный на сервере Docker

  4. Аккаунт на GitHub

Небольшие настройки.

Для начала в корне проекта необходимо создать Dockerfile. Вот мой пример:

FROM python

WORKDIR /usr/src/app

# Копируем и устанавливаем зависимости Python
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# Копируем все файлы из текущей директории в рабочую директорию контейнера
COPY . .

# Команда запуска контейнера
CMD ["/bin/bash", "-c", "python aiogram_run.py"]
  • Помещаем все данные проекта на свой репозиторий GIT.

  • Заходим на VPS сервер.

  • Создаем там папку

  • Выполняем PULL проекта с GitHub

  • Создаем свой именной образ:

docker build -t my_image_name .
  • Запускаем контейнер:

docker run -it -d --env-file .env --restart=unless-stopped --name container_name my_image_name

В данном примере я запускал телеграмм бота. Он использовал файл .env. Тут вы видите, как привязать env-file к рабочему контейнеру.

Для того чтоб посмотреть на консоль бота достаточно выполнить команду:

docker attach container_name

Для выхода из интерактивного режима воспользуйтесь комбинацией клавиш CTRL+P, CTRL+Q.

Если было полезно – подписывайтесь и ставьте лайки.

Tags:
Total votes 3: ↑2 and ↓1+1
Comments0

Развертывание локальной версии нейросети LLaMA с использованием Docker

Привет! В этом руководстве я покажу, как в несколько команд развернуть локальную версию нейросети LLaMA на вашем компьютере или сервере (работает на Windows, macOS и любых дистрибутивах Linux).

Шаг 1: Установка Docker

Для начала, установите Docker. Новичкам рекомендуется установить Docker Desktop.

Шаг 2: Запуск Docker контейнера

Откройте консоль и выполните следующую команду:

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Эта команда развернет локальный образ llama, который будет работать исключительно на вашем процессоре. Также существует вариант использования Nvidia GPU, с инструкциями можно ознакомиться здесь.

Шаг 3: Запуск языковой модели

Для запуска самой модели выполните команду:

docker exec -it ollama ollama run llama3:8b

Эта команда загрузит и запустит языковую модель llama3:8b (4.7GB). Также доступна более крупная версия llama3, 70b (40GB). Вы можете запускать и другие модели, список которых доступен здесь.

Чтобы запустить другую модель, используйте команду:

docker exec -it ollama ollama run model_name:tag

Интеграция в проекты

Использование языковой модели в таком формате может показаться неудобным. Более интересно интегрировать ее в свои проекты, например, в Telegram-бота с использованием Python.

Если вам интересно, как это сделать, подписывайтесь на меня. В следующем посте я покажу, как использовать локальную нейросеть (llama3) в Python проектах, включая создание Telegram-бота.

Tags:
Total votes 1: ↑1 and ↓0+1
Comments0

Друзья, хочу поделиться своими мыслями.

За достаточно короткий промежуток времени мои статьи собирают множество просмотров (тысячи, а иногда и десятки тысяч). После статьи (посты) добавляют в закладки (десятки и сотни раз). Вроде бы как это показывает, что она полезна и интересна конкретной аудитории — новичкам и всем, кому эти материалы могут помочь.

Однако, часто сталкиваюсь с негативными комментариями и дизлайками от пользователей с нулевой или минусовой кармой. Они обосновывают свою критику личной неприязнью, отсутствием новой информации для них, или частотой публикаций (посмотрите на причину дизов). При этом, в 99.99% случаев такие критики не написали ни одной статьи и максимум один пост, что очень редко и как правило он из серии "поговорим о блокировке телеграмм в РФ".

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

Зачем вы это делаете? Разве вы не понимаете, что таким образом отбиваете желание писать, делиться опытом и тратить на это время? И речь тут не только про меня.

Написание одной большой статьи (например, по телеграмм ботам) может занимать 3, 4 и более часов. В результате я вижу много закладок, но также минусовую карму после публикации)

Если мне что-то не интересно, я просто пойду дальше, заниматься своими делами. А вам, возможно, стоит заняться своими вопросами?

Благодарю за внимание.

Tags:
Total votes 1: ↑1 and ↓0+1
Comments6

Привет, сегодня хочу коротко рассказать про жизненный цикл Docker контейнера.

Жизненный цикл Docker контейнера

  1. Создание (Created):

    • Контейнер создаётся с помощью команды docker create.

    • Команда docker run объединяет docker create и docker start.

  2. Запуск (Running):

    • Контейнер начинает работать с командами docker start или docker restart.

    • Можно приостановить контейнер командой docker pause и возобновить работу командой docker unpause.

  3. Перезапуск (Restarting):

    • Контейнер автоматически перезапускается командой docker restart.

  4. Пауза (Paused):

    • Контейнер временно приостанавливается командой docker pause и возобновляется командой docker unpause.

  5. Остановка (Exited):

    • Контейнер прекращает свою работу командами docker stop или docker kill.

  6. Удаление (Removing):

    • Контейнер удаляется командой docker rm.

Эти этапы помогают понять, как управлять контейнерами и какие команды для этого использовать.

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

Tags:
Total votes 4: ↑3 and ↓1+3
Comments3

Как запустить Make на Windows

Make - это широко используемая для автоматизации сборки проектов утилита, которую бывает проблематично установить и запустить на windows. Сегодня я поделюсь самым простым способом, который позволит вам это сделать. Использовать мы будем Chocolatey.

Chocolatey (choco) - это менеджер пакетов для Windows, который позволяет устанавливать и управлять программным обеспечением из командной строки. Вот как установить утилиту make на Windows с помощью Chocolatey:

  1. Установка Chocolatey:

  • Откройте PowerShell от имени администратора.

  • Вставьте следующую команду и нажмите Enter:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Эта команда скачает и запустит скрипт установки Chocolatey. Подтвердите выполнение команды, если будет запрошено разрешение.

  1. Установка make с помощью Chocolatey:

После установки Chocolatey выполните следующую команду в PowerShell:

choco install make

Chocolatey автоматически загрузит и установит утилиту make и все необходимые зависимости.

  1. Проверка установки:

make --version

Если установка прошла успешно, вы увидите вывод с информацией о версии make.

Далее, для использования make можно использовать обычный CMD, но, всегда в режиме администратора.

Если было полезно - подписывайтесь и ставьте лайки. Благодарю за внимание.

Tags:
Total votes 3: ↑1 and ↓2+1
Comments3

Обновление библиотеки asyncpg-lite до версии 0.3.1.1

Рад сообщить, что библиотека asyncpg-lite обновлена до версии 0.3.1. Все предыдущие версии были удалены и больше не доступны для установки. Для корректной работы, пожалуйста, удалите старые версии с помощью следующей команды:

pip uninstall asyncpg-lite

Чтобы установить последнюю версию, используйте:

pip install --upgrade asyncpg-lite

Актуальная версия: 0.3.1.1

Вы можете найти страницу библиотеки на GitHub по следующему адресу: asyncpg-lite на GitHub.

Что нового в версии 0.3.1.1

В этой версии все методы библиотеки были переписаны. Если ранее библиотека работала исключительно с чистым asyncpg, то теперь asyncpg используется как асинхронный драйвер для взаимодействия с PostgreSQL, а все запросы выполняются через SQLAlchemy.

Причины обновления

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

Подробный разбор новой версии библиотеки я постараюсь опубликовать завтра в формате статьи.

Благодарю за ваше внимание и поддержку!

Tags:
Total votes 1: ↑1 and ↓0+3
Comments0

Все те кто пользовался библиотекой asyncpg-lite. Сообщаю, что завтра вечером будет выпущено обновление библиотеки asyncpg-lite. В новой версии библиотека будет полностью переписана с использованием SQLAlchemy и asyncpg (в старой версии использовался чистый asyncpg), при этом базовый синтаксис останется практически неизменным.

Такое решение принято из-за ограничений чистого asyncpg в предотвращении SQL-инъекций. Вместо разработки собственного решения я решил воспользоваться проверенными инструментами ORM, которые предоставляет SQLAlchemy, но, при этом, я постарюсь максимально сохранить ту простоту в использовании, которая была в старых версиях asyncpg-lite.

Начиная с версии asyncpg-lite 0.3, библиотека будет основываться на SQLAlchemy и драйвере asyncpg для работы с PostgreSQL. Версии ниже 0.3 будут сняты с доступности для скачивания и установки с завтрашнего дня.

С выходом asyncpg-lite 0.3 настоятельно рекомендуем удалить старые версии библиотеки и установить актуальную.

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

Благодарю за внимание! 🚀

Tags:
Total votes 1: ↑1 and ↓0+3
Comments0

Защищенный контент в Telegram боте с использованием aiogram 3.x

Если вы создаете Telegram бота и хотите обеспечить защиту контента от сохранения, копирования или пересылки, вы можете использовать новую функциональность библиотеки aiogram 3.x. Это особенно полезно, если ваш контент представляет ценность и вы хотите контролировать его дальнейшее распространение.

Для включения защиты контента достаточно установить флаг protect_content=True при отправке сообщений через ваш Telegram бот. Например:

await message.answer("Ваш текст или контент", protect_content=True)
await bot.send_message(chat_id=message.from_user.id, protect_content=True)
await message.answer_photo(photo=photo_id, caption='Мое описание фото', protect_content=True)

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

Не забудьте подписаться и поставить лайк, если этот пост оказался полезным для вас!

Tags:
Total votes 1: ↑1 and ↓0+3
Comments2

Корректно пишем главный файл телеграмм бота на Aiogram 3.x

Друзья, если вы читали серию моих статей про разработку ботов через aiogram 3, то видели что я там делился структурой своего бота, в частности главным файлом. Внес в него некоторые корректировки:

async def set_commands(commands):
    await bot.set_my_commands(commands, BotCommandScopeDefault())


async def start_bot():
    await set_commands()
    await bot.send_message(amin.id, 'я запущен и готов к работе')


async def stop_bot():
    await bot.send_message(amin.id, 'бот остановлен')


async def main():
    # регистрация роутера
    dp.include_router(start_router)

    # регистрация функций
    dp.startup.register(start_bot)
    dp.shutdown.register(stop_bot)

    try:
        await bot.delete_webhook(drop_pending_updates=True)
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
    finally:
        await bot.session.close()
      

Функция, которая запускается при старте бота:

async def start_bot():
    # регистрация командного меню
    await set_commands()
    await bot.send_message(amin.id, 'я запущен и готов к работе')

Функция, которая запускается при завершении сессии:

async def stop_bot():
    await bot.send_message(amin.id, 'бот остановлен')

После функции нужно зарегистрировать:

dp.startup.register(start_bot)
dp.shutdown.register(stop_bot)

И затем корректно закрыть сессию с ботом.

Благодарю за внимание. Подписывайтесь и ставьте лайки, если инфорамция была для вас полезной.

Tags:
Total votes 3: ↑2 and ↓1+3
Comments2

Создание фейковых данных пользователя на русском языке с использованием Python Faker

Для реализации этой задачи будем использовать замечательный модуль python - Faker.

Устанавливаем:

pip install faker

С помощью Faker можно легко создать фейковые имена, адреса, адреса электронной почты, номера телефонов и многое другое. Вот пример функции, которая генерирует такого рода данные:

from faker import Faker


def generate_fake_user():
    fake = Faker('ru_RU')

    return {
        'name': fake.name(),
        'address': fake.address(),
        'email': fake.email(),
        'phone_number': fake.phone_number(),
        'birth_date': fake.date_of_birth(),
        'company': fake.company(),
        'job': fake.job()
    }

Эта функция использует локализацию 'ru_RU', чтобы генерировать данные на русском языке. Результат будет включать в себя все необходимое для тестирования ваших приложений и сервисов.

Если информация представленная выше была вам полезной - добавляйте ее в закладки и ставьте лайки! Ваши отзывы и поддержка мотивируют меня и далее делиться с вами своими знаниями.

Tags:
Total votes 3: ↑3 and ↓0+6
Comments0

Как просто извлечь число из строки с помощью Python и регулярных выражений.

Если вам нужно извлечь число из текста, используйте функцию extract_number с помощью библиотеки re:

import re

def extract_number(text):
    match = re.search(r'\b(\d+)\b', text)
    if match:
        return int(match.group(1))
    else:
        return None

Примеры использования:

# Пример 1:
input_text = "Возраст: 30 лет"
number = extract_number(input_text)
print(number)  # Выведет: 30

# Пример 2:
input_text = "Тебе 25?"
number = extract_number(input_text)
print(number)  # Выведет: 25

# Пример 3:
input_text = "Я не знаю сколько ему лет"
number = extract_number(input_text)
print(number)  # Выведет: None (так как число не найдено)

Если было полезно - добавляйте в закладки и ставьте лайки.

Tags:
Total votes 6: ↑5 and ↓1+7
Comments5

Группировка списка словарей по ключу с помощью Python

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

Давайте напишем код:

from collections import defaultdict
from datetime import date
from typing import List, Dict, Any


def group_dicts_by_key(data_list_dict: List[Dict[str, Any]], key_group: str) -> dict:
    """
    Функция для группировки списка словарей по указанному ключу.

    Args:
    data_list_dict (list): Исходный список словарей.
    key_group (str): Ключ для группировки.

    Returns:
    dict: Словарь со сгрупированными значениями.
    """
    grouped_dict = defaultdict(list)

    for item in data_list_dict:
        order = item[key_group]
        grouped_dict[order].append(item)

    return dict(grouped_dict)

Пример использования:

if __name__ == "__main__":
    data = [
        {'art': '123das', 'order_number_1': 472931549},
        {'art': 'dasdw', 'order_number_1': 474286313},
        {'art': 'cxzcz', 'order_number_1': 474269428},
        {'art': 'wezsa', 'order_number_1': 474286312},
        {'art': 'fasqw', 'order_number_1': 474286313}
    ]

    result_dict = group_dicts_by_key(data, 'order_number_1')
    print(result_dict)

Сохраняйте в закладки, чтоб не потерять и ставьте лайк, если было полезно.

Tags:
Total votes 3: ↑2 and ↓1+3
Comments3

asyncpg-lite обновлена до версии 0.2.2.1!

В новой версии:

  • Убран флаг dsn_flag (теперь достаточно не передавать данные в параметр dns и состояние этого флага будет автоматически сброшено на dsn_flag = False)

  • Параметр deletion_password теперь обязательный (это сделано для безопасного выполнения критических операций - используйте надежный пароль)

  • Добавлен флаг debug: bool во все методы (по умолчанию его значение False)

  • Исрпавлены ошибки и улучшены логи (теперь там больше полезной информации)

Зачем нужен флаг debug?

Установив этот флаг в методе вы сможете вывести в консоль дополнительную информацию, такую как параметры запроса и сам SQL-запрос.

На уровень всего класса DatabaseManager не выводил, чтоб не перегружать консоль информацией.

С библиотекой вы сможете ознакомиться тут: asynpg-lite: Простой асинхронный менеджер для PostgreSQL на Python

Благодарю за обратную связь. Обязательно оставляйте свои замечания и пожелания к новым дополнениям к библиотеке.

Tags:
Total votes 1: ↑1 and ↓0+3
Comments0

Information

Rating
302-nd
Location
Краснодар, Краснодарский край, Россия
Date of birth
Registered
Activity

Specialization

Specialist
From 200,000 ₽
SQL
Python
PostgreSQL