擅长:python、mysql、java
<p>如果您正在使用python读取myfile,<a href="https://github.com/evolvIQ/splitstream" rel="nofollow noreferrer">^{<cd1>}</a>模块<a href="https://stackoverflow.com/a/31060923">described here</a>可能是您想要的。下面是一个测试示例(测试.py)它使用<a href="https://github.com/mwilliamson/jq.py" rel="nofollow noreferrer">jq.py</a>。在</p>
<pre><code>import splitstream
from jq import jq
def slurp(filename):
with open(filename) as f:
for s in splitstream.splitfile(f, format="json"):
yield s
obj = {}
for jstr in slurp('myfile'):
obj = jq("[%s, .] | add" % obj).transform(text=jstr, text_output=True)
print obj
</code></pre>
<p>这是一个运行示例</p>
^{pr2}$
<p>尽管这似乎满足了您要求使用<a href="https://github.com/mwilliamson/jq.py" rel="nofollow noreferrer">jq.py</a>的要求,但我认为这不是一个好的解决方案,因为在python和jq之间共享状态既笨拙又低效。在</p>
<p>一个更好的方法可能是使用jq作为子流程。下面是一个示例(test2.py):</p>
<pre><code>import json
import sh
cmd = sh.jq('-M', '-s', 'add', 'myfile')
obj = json.loads( cmd.stdout )
print json.dumps(obj, indent=2)
</code></pre>
<p>样本运行:</p>
<pre><code>$ python test2.py
{
"a": 1,
"b": 2
}
</code></pre>