аргумент python, принимающий 3 аргумента? Куда? - PullRequest
2 голосов
/ 27 октября 2010

Я работаю с API безопасного броузера Google и следующим кодом:

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)

Создает следующую трассировку:

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)

Что я здесь не так делаю?Я не могу определить, где передаются 3 аргумента.Кстати, я звоню это с

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

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

По сути, вы не указали метод в URL, поэтому Python предположил, что это URL-адрес файла, и попытался открыть его как файл - что не работает (и выдает сбивающее с толку сообщение об ошибке в процессе неудачи).

Попытка:

dlurl = "http://safebrowsing.clients.google.com/safebrowsing/downloads?client=api&apikey=" + api_key + "&appver=1.0&pver=2.2"
0 голосов
/ 27 октября 2010

Функция urllib.urlopen открывает сетевой объект, обозначенный URL для чтения.Если URL не имеет идентификатора схемы, он открывает файл.

Соответствующий открыватель вызывается в строке 88, что приводит к открытию open_file на 209.

Если вы посмотрите на функцию:

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

Ответ: вы должны предоставить такую ​​схему, как http: //...

...