Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
#HIVE/USDT analysis :
#HIVE is currently experiencing an upward trend, trading above the 200 EMA. The price is positioned above the support zone following a corrective pullback. It is anticipated that the price will rebound from this level and test the previous swing high.
TF : 1h
Entry : $0.2807
Target : $0.3037
SL : $0.2675
#HIVE/USDT analysis :
#HIVE is in an uptrend, forming higher highs (HHs) and higher lows (HLs) structure while trading above the 200 EMA. The price is currently trading above the support zone. It is anticipated to rebound from this level and sustain its bullish momentum to test previous highs.
TF : 1H
Entry : $0.1770
Target : $0.1814
SL : $0.1743
#HIVE/USDT analysis :
#HIVE is currently consolidating above the support zone and the 200 EMA. The price is expected to sustain its bullish momentum and establish new highs. It is advisable to await a pullback for a long entry.
TF : 2H
Entry : $0.1859
Target : $0.2026
SL : $0.1818
#HIVE bounced from the Green zone on Weekly time frame,now price is trying to break up the trendline to continue the bullish trend 👀
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
Bitcoin Miner Invests in AI Tech
HIVE, a Canadian bitcoin miner, invests $30 million in AI computations using Nvidia GPUs. HIVE aims for around $15 million annual revenue from this initiative post-bitcoin halving. Meanwhile, many public mining stocks are expected to end the year in loss due to rising operational costs and reduced mining profitability. Full details here: Forklog.
#Bitcoin#AI#Mining#HIVE#Investment#Nvidia#Cryptocurrency#Halving#TechInnovation#PublicMining#CryptoMarket
#вакансия#hadoop#sql#java#hive#spark#python#scrum#agile
🚀 Вакансия: Старший разработчик Hadoop🚀
Локация: Санкт-Петербург/Москва (гибридный формат)
Вилка: 250 - 350К
✈️ Готовы обсудить релокационный пакет для кандидата не из Санкт-Петербурга и Москвы.
О нас:
Мы — ведущий банк России, активно развивающий свои цифровые продукты и услуги. Сейчас мы ищем опытного и амбициозного Старшего разработчика Hadoop, который присоединится к нашей команде для работы над инновационными проектами в области данных и аналитики.
Что вам предстоит делать:
- 🤝 Взаимодействовать с бизнес-заказчиками, понимать и структурировать их требования.
- ✍️ Разрабатывать функциональные требования для построения витрин данных.
- 🛠 Создавать прототипы витрин с использованием SQL, Java, Python, Spark.
- 🧪 Разрабатывать алгоритмы тестирования.
- 📑 Документировать разрабатываемые компоненты ПО.
- 🔧 Устранять дефекты, анализировать и исправлять инциденты в рамках 3-й линии поддержки.
- 🏃♂️ Работать в SCRUM спринтах.
Наши ожидания:
- ✅ Знание SQL (подтверждается прохождением теста).
- 📈 Опыт в бизнес и системном анализе не менее 2 лет: выявление, фиксация, согласование требований, постановка задач разработке, разработка проектной и сопроводительной системной документации.
- 👥 Опыт командной разработки с использованием Jira и Confluence; знание BitBucket будет плюсом.
- 🧩 Умение формализовывать задачи в виде четких и понятных алгоритмов.
- 🎓 Высшее образование.
- 💬 Отличные коммуникативные навыки, самостоятельность, внимательность к деталям, обязательность, ответственность.
Будет преимуществом:
- 📚 Опыт работы с Hadoop и знания его архитектуры.
- 🖥 Знание Hive, Java, Python, Spark.
- 🏃 Опыт работы в Agile.
- 📜 Знание и умение работы с wiki-системой Confluence и трекинговыми системами (Jira, Redmine и т.д.).
- 🏦 Знание банковской предметной области.
Мы предлагаем:
- 📄 Официальное оформление и стабильный, прозрачный доход.
- 🏆 Все льготы и преимущества работы в аккредитованной ИТ-компании.
- 🎁 Партнерские программы и скидки для сотрудников.
- 🏢 Гибридный формат работы.
Если вы хотите развиваться в динамичной компании и работать над интересными проектами в сфере больших данных, мы будем рады видеть вас в нашей команде!
🙋🏼♀️По всем вопросам к @BekhterevaElena
#вакансия#ds
Мы в Циан 🏘 ищем сильного Senior Data Scientist-а в команду CRM.
Локация - Полная удаленка внутри РФ. Если есть желание ходить в офис, у нас есть замечательные современные офисы в Москве, Питере и Новосибе.
Вилка - от 350 до 500 гросс, готовы обсуждать
О нас
В Циан большая команда ML. В команде настроены процессы перфоманс ревью, регулярного обмена опытом, выделяем время на исследовательскую работу!
Команда CRM занимается прямыми коммуникациями с клиентами (пуши, емейлы, смски и тд)
Наш стек
● Python (Numpy, SciPy, Pandas, sklearn, PyTorch);
● Экосистема Hadoop (PySpark, Hive, Kafka);
● Airflow;
Задачи:
● Повышение эффективности пуш-уведомлений, емейлов и других каналов прямых коммуникаций с клиентами;
● Оптимизация коммуникационной нагрузки, выбор оптимального канала коммуникации, выбор оптимального времени отправки;
Требования к кандидату
● Опыт: Не менее 3х лет релевантного опыта на позиции DS в продуктовой компании
● Python: пишет легко читаемый и поддерживаемый код
● SQL (оконные функции, оптимизация запросов)
● Apache стек: HDFS/Kafka/Spark (DF API)
● Классический ML: бустинги, линейные модели.
● Базовые знания в NLP и CV: трансформеры, TF-IDF
● DL: PyTorch.
Плюшки:
ДМС с первого дня (стоматология, госпитализация, полис ВЗР), Кафетерий льгот Benefactory, 5 day off в год, помимо основного отпуска.
Пишите в ЛС рекрутеру / мне (@DANAlina95 / @kgavrilchik) или скидывайте свои резюме на [email protected]
#Python#Numpy#SciPy#Pandas#sklearn#PyTorch#Hadoop#PySpark#Hive#Kafka#Airflow