I'm trying to use msgpack to write a list of dictionaries to a file. However, when I iterate over an instance of Unpacker, it seems like the number 10 is unpacked between each 'real' document.
The test script I'm running is
import msgpack
from faker import Faker
import logging
from logging.handlers import RotatingFileHandler
fake = Faker()
fake.seed(0)
data_file = "my_log.log"
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
handler = RotatingFileHandler(data_file, maxBytes=2000, backupCount=10)
logger.addHandler(handler)
fake_dicts = [{'name': fake.name()} for _ in range(100)]
for item in fake_dicts:
dump_string = msgpack.packb(item)
logger.debug(dump_string)
unpacker = msgpack.Unpacker(open(data_file))
for unpacked in unpacker:
print unpacked
where I've used fake-factory to generate fake data. The resulting printed output is as follows:
{'name': 'Joshua Carter'}
10
{'name': 'David Williams'}
10
{'name': 'Joseph Jones'}
10
{'name': 'Gary Perry'}
10
{'name': 'Terry Wells'}
10
{'name': 'Vanessa Cooper'}
10
{'name': 'Michael Simmons'}
10
{'name': 'Nicholas Kline'}
10
{'name': 'Lori Bennett'}
10
I don't understand why the number 10 is printed between each dictionary? Is this somehow introduced by the logger?