2012-11-18 41 views
0

要觸發更新,您必須訪問瀏覽器中的網址。這個腳本是在外殼材質做到這一點:在Python中請求URL

#!/bin/bash 
# Bash to initiate Solr Delta Import Handler 

# Setup Variables 
hostName=localhost 
portNum=8080 
SOLRPATH=/solr 
SOLR='delta-import&clean=false' 
STATUS='dataimport?command=status' 
urlCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${SOLRCMD}" 

# Operations 
curl $URLCMD 

我試圖用Python寫這個,這是我多遠了:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

# Setup Variables 
hostName='localhost' 
portNum='8080' 
SOLRPATH='/solr' 
SOLRCMD='delta-import&clean=false' 
STATUSCMD='dataimport?command=status' 
urlCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${SOLRCMD}' 

# Alternative to Curl {URLCMD} 

所以基本上我有兩個問題:

  1. 到目前爲止,我的Python代碼是否正常?
  2. python中的Curl簡單替換是什麼?事件通常是通過訪問URL來觸發的,但我不知道如何在Python中簡單地執行此操作。
+1

這對你的代碼工作並不重要。但我真的認爲你應該使用其他命名約定,如PEP-8建議,如果你要用python編寫它:http://www.python.org/dev/peps/pep-0008/ –

回答

3

首先,使用這些類型的字符串在Python格式之一:Python中使用

urlCmd='http://{0}:{1}{2}/dataimport?command={3}'.format(hostName,portnum, SOLRPATH, SOLRCMD) 
#or 
urlCmd='http://%s:%s%s/dataimport?command=%s' % (hostName,portnum, SOLRPATH, SOLRCMD) 

雖然有pycurl libcurl,如果您希望腳本保持可移植性,則應使用內置模塊(如urllib2)來訪問您生成的URL。

import urllib2 
req = urllib2.urlopen(urlCmd) 

現在有幾件事情,你可以用你的要求去做:

req.close  req.fileno  req.getcode req.headers req.msg 
req.read  req.readlines req.code  req.fp   req.geturl 
req.info  req.next  req.readline req.url 

雖然大多數的方法是自我解釋,請參考urllib2 docs爲他們做什麼詳細的解釋。

2
  1. 是我的Python代碼確定這麼遠?

不,它不是。請看看Python中的字符串格式。

試試這個:

... 
urlCmd='http://%s:%d%s/dataimport?command=%s' % (hostName, portNum, SOLRPATH, SOLRCMD) 
  1. 什麼是簡單alterantive在python捲曲?事件通常是通過訪問URL來觸發的,但我不知道如何在Python中簡單地執行此操作。

嘗試urllib模塊:

import urllib  
urllib.urlopen(url) 
+0

是否將urllib包含在python 2.7中或做到了我需要安裝它?此外,感謝您對字符串格式 – Jimmy

+0

提示'urllib'包含在Python自2.3版以來。所以這應該適合你。 – Constantinius