2010-10-27 38 views
2

Je travaille avec l'api SafeBrowsing google, et le code suivant:argument python prenant 3 arguments? Où?

def getlist(self, type): 
    dlurl = "safebrowsing.clients.google.com/safebrowsing/downloads?client=api&apikey=" + api_key + "&appver=1.0&pver=2.2" 
    phish = "googpub-phish-shavar" 
    mal = "goog-malware-shavar" 
    self.type = type 
    if self.type == "phish": 
     req = urllib.urlopen(dlurl, phish) 
     data = req.read() 
     print(data) 

produit le dos trace suivante:

File "./test.py", line 39, in getlist 
    req = urllib.urlopen(dlurl, phish) 
File "/usr/lib/python2.6/urllib.py", line 88, in urlopen 
return opener.open(url, data) 
File "/usr/lib/python2.6/urllib.py", line 209, in open 
return getattr(self, name)(url, data) 
TypeError: open_file() takes exactly 2 arguments (3 given) 

ce que je fais mal ici? Je ne peux pas repérer où 3 arguments sont passés. BTW, j'appelle cela avec

x = class() 
x.getlist("phish") 

Répondre

4

Fondamentalement, vous n'avez pas fourni une méthode dans l'URL, si Python supposé qu'il était une URL de fichier, et a essayé de l'ouvrir comme un fichier - qui doesn ne fonctionne pas (et jette un message d'erreur confus dans le processus d'échec).

Essayez:

dlurl = "http://safebrowsing.clients.google.com/safebrowsing/downloads?client=api&apikey=" + api_key + "&appver=1.0&pver=2.2" 
+0

merci les gars. J'avais d'abord utilisé httplib et a fini par décider de urllib, j'ai oublié de le changer. Très appréciée. – Stev0

+0

thnaks ça m'a aidé à sauver mon cul !! – user993563

0

La urllib.urlopen fonction ouvre un objet réseau désigné par une URL pour la lecture. Si l'URL n'a pas d'identifiant de schéma, il ouvre un fichier.

L'ouvreur approprié est appelé à la ligne 88 qui conduit à ouvre-boîte open_file à 209.

Si vous regardez la fonction:

def open_file(self, url): 
     """Use local file or FTP depending on form of URL.""" 

Réponse: vous devriez fournirez un système comme http:// ...