我有一个使用curl将文件发布到SOLR集合的python脚本。
命令如下所示,
solrURL = "http://mySolr:8983/solr/solrdatabase/update/csv?commit=true --data-binary @+"fileName" -H 'Content-type:text/xml; charset=utf-8'"
print "=====SOLR URL====="
print solrURL
print "=====SENDING TO SOLR====="
subprocess.call(['curl', '-v', solrURL])
然而,当它这样做时,它会这样做,
GET http://mySolr:8983/solr/solrdatabase/update/csv?commit=true --data-binary @ +“fileName”-H'Content-type:text / xml; charset = utf-8'HTTP / 1.1
什么时候应该使用POST。如果我在终端中手动执行命令,它可以正常工作。当我尝试使用python脚本时,为什么会这样做?
答案 0 :(得分:2)
如果您将列表传递到subprocess.call
,则应将args分成字符串中的各个元素:
solrURL = "http://mySolr:8983/solr/solrdatabase/update/csv?commit=true"
subprocess.call(['curl', '-v', solrURL, '--data-binary', '@+"fileName"', '-H', 'Content-type:text/xml; charset=utf-8'])
您所看到的是,您的所有参数都被解释为一个参数,而cUrl使用带有空格的长字符串作为URL。