ijson模块有一个文档选项allow_comments=True
,但是当我包含它时,会产生一条错误消息:
ValueError:python后端不支持注解
Below is a transcript using the file test.py:
import ijson
for o in ijson.items(open(0), 'item'):
print(o)
请注意,我对类似的文档选项multiple_values=True
没有问题。
成绩单
$ python3 --version
Python 3.10.9
$ python3 test.py <<< [1,2]
1
2
# Now change the call to: ijson.items(open(0), 'item', allow_comments=True)
$ python3 test.py <<< [1,2]
Traceback (most recent call last):
File "/Users/user/test.py", line 5, in <module>
for o in ijson.items(open(0), 'item', allow_comments=True):
File "/usr/local/lib/python3.10/site-packages/ijson/utils.py", line 51, in coros2gen
f = chain(events, *coro_pipeline)
File "/usr/local/lib/python3.10/site-packages/ijson/utils.py", line 29, in chain
f = coro_func(f, *coro_args, **coro_kwargs)
File "/usr/local/lib/python3.10/site-packages/ijson/backends/python.py", line 284, in basic_parse_basecoro
raise ValueError("Comments are not supported by the python backend")
ValueError: Comments are not supported by the python backend
$
1条答案
按热度按时间5cg8jx4n1#
请看一下文档的Backends部分,其中写道:
Ijson以位于ijson/backends中的后端的形式提供了实际解析的几种实现:
yajl2_c
:一个使用YAJL 2.x的C扩展。这是最快的,但是在安装这个包时可能需要编译器和YAJL开发文件。主要平台/架构都有二进制wheel发行版,以使用户不必编译这个包。yajl2_cffi
:使用CFFI Package YAJL 2.x。yajl2
:使用ctypes Package YAJL 2.x,用于由于某种原因无法使用CFFI的情况。yajl
:已弃用YAJL 1.x + ctypes Package 器,适用于更旧的系统。python
:纯Python解析器,适合与PyPy一起使用稍后在常见问题解答中它说:
问:后端之间有什么不同吗?
... python后端不支持
allow_comments=True
它也在内部使用str对象,而不是bytes,但这是一个内部细节,用户不需要担心,将来可能会改变。如果你想支持
allow_comments=True
,你需要使用一个基于yajl
的后端。将顶级库导入为
import ijson
时,将按照上面列表的相同顺序使用第一个可用后端,其名称记录在ijson. backend下。如果设置了IJSON_BACKEND
环境变量,则其值优先,并用于选择默认后端。您需要在您的系统上安装必要的库等,以便使其工作。