Форум сайта python.su
-1
Добрый день !
Я сейчас читаю книгу Лутц М. - Изучаем Python (4-е издание)- 2011.
Я до читал до сохранение и интерпретация упакованных двоичных данных в файлах.
Я набрал код как в книги во тон.
F = open(r'D:\book\datafile.bin','wb')# Открыть файл для записи в двоичном режиме
import struct
data = struct.pack('>i4sh', 7, ‘spam’, 8)# Создать пакет двоичных данных
print(data)
F.write(data)
F.close()
F = open(r'D:\book\datafile.bin','rb')
data = F.read()
print(data)
Но выходит ошибка
C:\Python33\python.exe “D
Mark Lutz/myfile/struct_fale.py”
Traceback (most recent call last):
File “D
Mark Lutz/myfile/struct_fale.py”, line 13, in <module>
data = struct.pack('>i4sh', 7, ‘spam’, 8)# Создать пакет двоичных данных
struct.error: argument for ‘s’ must be a bytes object
Что надо сделать чтобы заработала все спасибо заранее .
Офлайн
33
fox85
Оберни код в теги, чтобы было
так
Офлайн
49
>>> import struct >>> f = open('test.bin', 'wb') >>> data = struct.pack(bytes('>i4sh'), 7, 'spam', 8) >>> print data ^Gspa >>> f.write(data) >>> f.close() >>> f = open('test.bin', 'rb') >>> data = f.read() >>> print data ^Gspa >>>
Офлайн
-1
import struct
F = open(r'D:\book\datafile.bin','wb')# Открыть файл для записи в двоичном режиме
data = struct.pack(bytes ('>i4sh'), 7, ‘spam’, 8 )
print(data)
F.write(data)
F.close()
F = open(r'D:\book\datafile.bin','rb')
data = F.read()
print(data)
data = struct.pack(bytes ('>i4sh'), 7, ‘spam’, 8 )
TypeError: string argument without an encoding
Не работает 
Офлайн
0
➜ ~ python Python 2.7.6 (default, Mar 22 2014, 22:59:56) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import struct >>> data =struct.pack('>i4sh', 7, 'spam', 8) >>> data '\x00\x00\x00\x07spam\x00\x08' >>> ➜ ~ python3 Python 3.4.0 (default, Mar 22 2014, 17:10:43) [GCC 4.6.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import struct >>> data =struct.pack(b'>i4sh', 7, b'spam', 8) >>> data b'\x00\x00\x00\x07spam\x00\x08'
Офлайн