从使用 zlib 压缩的树中读取数据时uproot
,我发现 zlib 存在一些压缩错误,例如:Error -3 while decompressing data: incorrect data check
或者Error -5 while decompressing data: incomplete or truncated stream.
当我在 ROOT 中打开文件时,我从 zlib 中得到类似的错误:
R__unzip: error -3 in inflate (zlib)
Error in <TBasket::ReadBasketBuffers>: fNbytes = 20102, fKeylen = 199, fObjlen = 28540, noutot = 0, nout=0, nin=19903, nbuf=28540
Error in <TBranchElement::GetBasket>: File: Stage_1_files/AnalysisResults.31.root at byte:51212830, branch:data.fJetConstituents.fPt, entry:133851, badread=1, nerrors=1, basketnumber=189
...
但是,ROOT 会跳过有问题的条目(或多个条目)并继续尝试读取文件。在 uproot 中,zlib 异常被向上传递。我抓住了它,但我无法继续处理该文件。该文件显然存在潜在问题(似乎来自我无法控制的 ROOT 合并问题),但是有没有办法让根目录识别并跳过有问题的条目并继续处理其余数据?我可以想象在阅读时限制条目,但我如何在不反复试验的情况下通过根目录识别它们?我只能通过在根目录中逐个读取每个分支来识别有问题的分支,并且仍然无法识别哪些条目是问题(或通过检查 ROOT)。
谢谢!