Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 21, 2015 20:30:39

sav
Зарегистрирован: 2015-12-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

Читаем и обрабатываем файл в бинарном режиме. В файле текст “analizator…”
Задано чтение 16-и байтов, поэтому читаются лишние три нуля…
Два вопроса:
1. Как сделать по длине файла?
2. Как запустить в Python 2.7

Текст Python 3.5

f = open ('file_.txt','rb')
for i in range (16):
        d=int.from_bytes(f.read(1), byteorder='big')
        ''' алгоритм обработки '''
        print (hex(d), end=" ")
        print (chr(d))
f.close()

Результат выполнения
0x61 a
0x6e n
0x61 a
0x6c l
0x69 i
0x7a z
0x61 a
0x74 t
0x6f o
0x72 r
0x2e .
0x2e .
0x2e .
0x0
0x0
0x0

Отредактировано sav (Дек. 22, 2015 15:39:28)

Офлайн

#2 Дек. 21, 2015 23:16:08

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

sav
В бесконечном цикле while считывайте по 1 байту, когда вернет пустую строку - тогда файл закончился и выходите из цикла. Пробуйте



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 22, 2015 02:44:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

f.read(13)



Офлайн

#4 Дек. 22, 2015 15:43:34

sav
Зарегистрирован: 2015-12-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...


Попытка запустить в Python 2.7

f = open ('file_.txt','rb')
for i in range (16):
        d=int.from_bytes(f.read(1), byteorder='big')
        ''' алгоритм обработки '''
        print (chr(d))
f.close(
)
Traceback (most recent call last):
File “CDocuments and Settings/Администратор/Мои документы/Downloads/2015-09-05 17-25-33/exp.py”, line 3, in <module>
d=int.from_bytes(f.read(1), byteorder='big')
AttributeError: type object ‘int’ has no attribute ‘from_bytes’

Офлайн

#5 Дек. 22, 2015 18:24:39

Zula
Зарегистрирован: 2015-12-16
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

sav
Попытка запустить в Python 2.7
https://docs.python.org/3/library/stdtypes.html#int.from_bytes
New in version 3.2.

Офлайн

#6 Дек. 25, 2015 20:25:51

sav
Зарегистрирован: 2015-12-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

Спасибо, но ничего не помогает из этой ссылки…
Эти примеры не работает:

>>> int.from_bytes(b'\x00\x10', byteorder='big')
16
>>> int.from_bytes(b'\x00\x10', byteorder='little')
4096
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
-1024
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
64512
>>> int.from_bytes([255, 0, 0], byteorder='big')
16711680
У кого нибудь работает это?

Отредактировано sav (Дек. 25, 2015 20:53:12)

Офлайн

#7 Дек. 26, 2015 00:23:39

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Чтение бинарного файла. Закончить цикл...

sav
Это из третьего Питона



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version