【问题标题】:Python curl usage inconsistencyPython curl 使用不一致
【发布时间】:2011-12-08 00:28:59
【问题描述】:

我有一个 python 脚本,它使用 curl 将文件发布到 SOLR 集合中。

命令如下所示,

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 脚本时,有什么想法为什么会这样吗?

【问题讨论】:

标签: python solr python-2.x


【解决方案1】:

如果您将列表传递给subprocess.call,您应该将参数分隔为字符串中的单个元素:

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。

【讨论】:

  • 看了一会代码才意识到这一点。不过感谢您的回复:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
相关资源
最近更新 更多