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

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

06.10.2016, 13:57. Показов 5184. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru