Python msgpack将数字';10';在每个项目之间

Python msgpack将数字';10';在每个项目之间,python,Python,我正在尝试使用将字典列表写入文件。然而,当我迭代Unpacker的一个实例时,似乎在每个“真实”文档之间解包了编号10 我正在运行的测试脚本是 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.ge

我正在尝试使用将字典列表写入文件。然而,当我迭代
Unpacker
的一个实例时,似乎在每个“真实”文档之间解包了编号
10

我正在运行的测试脚本是

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
我曾经在那里生成假数据。生成的打印输出如下所示:

{'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

我不明白为什么每本字典之间都印着数字
10
?这是由
记录器
引入的吗?

这来自解包的内容。您可以像这样复制自己:

In [23]: unpacker = msgpack.Unpacker(open(data_file))

In [24]: unpacker.next()
Out[24]: {'name': 'Edward Ruiz'}

In [25]: unpacker.next()
Out[25]: 10

我的第一个想法是将换行符(Unicode 10)转换为整数。尝试
print msgpack.packb(item)
直接打印它,看看它是在那里引入的还是在解包中引入的。它似乎确实来自记录器引入的换行符。我将尝试使用
handler.terminator=“
以下内容(升级到Python 3后)。关于如何首先防止
10
s进入
msgpack
,有什么想法吗?我以前没有使用过msgpack,但我在这里简要地看了一下规范:。乍一看,这似乎是30秒钟内的预期行为。生成器表达式可能会很好地处理这一问题:我很确定换行符来自
记录器
,因为在Python 3中,脚本版本使用(人类可读)JSON而不是msgpack我可以看到
handler.terminator=”“
命令的效果。可能禁用日志记录: