Jas*_*onB 2 python curl solr urllib2 libcurl
我一直在尝试学习 Solr4.0,我正在查看他们文档中的 JSON 文档更新, 如下所示:
cd example/exampledocs
curl 'http://localhost:8983/solr/update/json?commit=true' --data-binary @books.json -H 'Content-type:application/json'
Run Code Online (Sandbox Code Playgroud)
它工作正常,我可以在我的 solr 索引上看到更新的文档。但是,我想知道如何通过 urllib2 在 python 中使用这个 curl 命令。所以,像这样:
theurl=r"""http://localhost:8983/solr/update/json?commit=true --data-binary @books.json -H 'Content-type:application/json'"""
import urllib2
import httplib
import cookielib
...use urllib2 to post theurl
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用。看起来 urllib2 不能识别(例如-H显然看起来特定于 curl 的)上面形成的theurl. 应该如何格式化theurl以便我可以将它与 urllib2 一起使用?
我会尝试
import urllib2
with open('books.json', 'rb') as data_file:
my_data = data_file.read()
req = urllib2.Request(url='http://localhost:8983/solr/update/json?commit=true',
data=my_data)
req.add_header('Content-type', 'application/json')
f = urllib2.urlopen(req)
# Begin using data like the following
print f.read()
Run Code Online (Sandbox Code Playgroud)
从中你可以看到 --data-binary 参数只是像POST请求一样发送到服务器的数据。当该参数以@ 符号开头时,表示从文件中读取数据。在本例中,它是文件“books.json”。您还需要发送标头( 的-H参数curl)。因此,您只需要add_header使用标头名称及其值来调用该方法。
希望这能让你开始。有关 urllib2 的更多信息,请访问http://docs.python.org/2/library/urllib2.html
| 归档时间: |
|
| 查看次数: |
3348 次 |
| 最近记录: |