Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5

Правильно сформировать заголовок файла

06.10.2016, 13:57. Показов 5198. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Уже второй день никак не могу решить одну задачу, понимаю, что всё просто и понимаю, что код мой корявый, но из открытых пары десятков вкладок решения так и не нашел, поэтому прошу помощи… Суть в том, что мне нужно принимать энное количество байт от сервера и записывать в файл определенного формата.
Я создаю соккет, подключаюсь к серверу, принимаю данные в список, потом конвертирую список в строку. Далее формирую строку хедера для файла, после чего приклеиваю строку хедера к строке данных и записываю всё это в файл и наблюдаю такую картину: хедер находится в начале файла, но не в виде байтов, а как текст… То есть хедер выглядит так: 0xbad4feed0x125e773c1120x7d170x400 и он просто текстом написан в начале бинарника… Скрипт сейчас выглядит так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('192.168.1.58', 32023))
y = 0
buffr = 0
data = []
while y  < 65536:
    buffr = sock.recv(1024)
    x = sys.getsizeof(buffr)
    y = x + y
    data.append(buffr)
current_milli_time = lambda: int(round(time.time() * 1000))
pre_head = ''.join(hex(0xBAD4FEED) + hex(current_milli_time()) + hex(32023) + hex(1024))
pre_data = ''.join(data)
head = pre_head.replace('L','')
head = head.encode("utf-8")
flush = head + pre_data
my_file = open("tcp.slf", 'ab')
my_file.write(flush)
my_file.close()
sock.close()
Буду благодарен за науку )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2016, 13:57
Ответы с готовыми решениями:

Не правильно определяется заголовок графического файла
Побегав по форумам, я нашел как определяют тип файлов, исходя из содержания самого файла. Например файл «JPEG» сделанный редактором...

Сформировать заголовок, отправить его, а затем принять ответный заголовок
День добрый, форумчане. Предо мной задача - сформировать заголовок, отправить его, а затем принять ответный заголовок. Первая часть...

Не могу сформировать заголовок. (см. в теме)
Привет всем. Не могу сформировать заголовок за недостатком знаний. Хотел бы узнать что этим действием можно сделать? class Request { ...

6
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 15:26
Видимо, писать туда надо bytes, а не string.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 15:39  [ТС]
я пробовал
Python
1
pre_head = b''.join(hex(0xBAD4FEED) + hex(current_milli_time()) + hex(32023) + hex(1024))
но в итоге всеравно тип данных на выходе--string
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 15:43
Фиксированная последовательность байт:
Python
1
b'\xba\xd4\xfe\xed'
Целое в байты (гуглится на раз):
Python
1
(1000).to_bytes(2, byteorder='big')
Скобки с переменной не нужны. И лямбда вам тоже, вроде, не нужна.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 16:12  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Целое в байты (гуглится на раз):
Python
1
port = (32023).to_bytes(2, byteorder='big')
>>>AttributeError: 'int' object has no attribute 'to_bytes'

Замучался уже с этими преобразованиями... Почему нельзя любую строку сразу в байты писать? Извините за "нубскость" Пайтон всего третий день в голове пытается улечься.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
06.10.2016, 16:21
Какая у вас версия Питона? Вроде, to_bytes только в 3.2 появилось.

Добавлено через 2 минуты
Цитата Сообщение от darwol Посмотреть сообщение
Почему нельзя любую строку сразу в байты писать?
Почему же нельзя, можно. Только вам и строки не нужны. Если вы сначала конвертите данные в строку - то резонно, потом встанет обратная задача. А всего этого можно избежать.
Про b'\x...' - тоже к 3-му относилось.
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 17:10  [ТС]
Проверил, да, версия 2.7 --вы правы, сейчас буду обновлять.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2016, 17:10
Помогаю со студенческими работами здесь

Правильно убрать заголовок из ActionBar ?!
Знаю этот вопрос задавался уже миллион раз, но обыскав весь интернет ответа на него я так и не получил... Как убрать заголовок из...

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

Не правильно показывает заголовок в категорих
Всем привет. Сайт http://груззапчасть.рф/catalog/maz/ именно в категориях товара неправильно показывает заголовок страницы. Показывает...

Как правильно оформлять заголовок main
Добрый день всем. Читая книги, копаюсь в чужих кодах нахожу разное оформление функции main. Например в Керниган и Ритчи по Си, автор иногда...

Как правильно Отправить http заголовок в php curl?
Здравствуйте, помогите пожалуйста переделать запрос из curl в php curl Если ввести этот запрос просто в терминале сервера то придет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru