Python卷曲使用不一致

时间:2011-12-08 00:29:00

标签: python solr python-2.x

我有一个使用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脚本时,为什么会这样做?

1 个答案:

答案 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。