Найти - Пользователи
Полная версия: Помогите найти ошибку
Начало » Python для новичков » Помогите найти ошибку
1
fox85
Добрый день !
Я сейчас читаю книгу Лутц М. - Изучаем 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 “DMark Lutz/myfile/struct_fale.py”
Traceback (most recent call last):
File “DMark 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

Что надо сделать чтобы заработала все спасибо заранее .
Budulianin
fox85

Оберни код в теги, чтобы было
так
Alen
>>> 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 
>>> 
fox85
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

Не работает
yv84
  ~  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'
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB