【问题标题】:Python 2 to Python 3 : TypeError: 'module' object is not callable [duplicate]Python 2 到 Python 3:TypeError:“模块”对象不可调用 [重复]
【发布时间】:2018-06-19 04:08:48
【问题描述】:

我正在尝试使用 urllib2 模块修改用 Python 2 语言编写的代码。我确实使用 Python 3 中的模块 urllib 修改了我的代码,但出现错误:

req = urllib.request(url)

TypeError: 'module' object is not callable

我在这里做错了什么?

import urllib.request
import json
import datetime
import csv
import time

app_id = "172"
app_secret = "ce3" 


def testFacebookPageData(page_id, access_token):

    # construct the URL string
    base = "https://graph.facebook.com/v2.4"
    node = "/" + page_id
    parameters = "/?access_token=%s" % access_token
    url = base + node + parameters

    # retrieve data
    req = urllib.request(url)
    response = urllib.urlopen(req)
    data = json.loads(response.read())

    print (json.dumps(data, indent=4, sort_keys=True))

【问题讨论】:

    标签: python python-3.x urllib2 urllib


    【解决方案1】:

    换行

    req = urllib.request(url)
    response = urllib.urlopen(req)
    

    到:

    req = urllib.request.Request(url)
    response = urllib.request.urlopen(req)
    

    您可以找到有关此模块的更多信息**https://docs.python.org/3/library/urllib.request.html#urllib.request.Request **https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen

    【讨论】:

      【解决方案2】:

      @kvmahesh 的回答绝对正确。我将提供一个支持这两个版本的替代解决方案。使用 Python 的 requests 库进行调用。

      import requests
      import json
      import datetime
      import csv
      import time
      
      app_id = "172"
      app_secret = "ce3" 
      
      
      def testFacebookPageData(page_id, access_token):
      
          # construct the URL string
          base = "https://graph.facebook.com/v2.4"
          node = "/" + page_id
          parameters = "/?access_token=%s" % access_token
          url = base + node + parameters
      
          # retrieve data
          response = requests.get(url)
          data = json.loads(response.text())
      
          print (json.dumps(data, indent=4, sort_keys=True))
      

      请求的详细用法:Python Requests Docs

      【讨论】:

        【解决方案3】:

        urllib.request 是一个模块。您正在第 22 行调用模块...

        req = urllib.request(url)
        

        要解决以下问题:

        1) 顶部导入:

        from urllib.request import urlopen
        

        2) 然后将 url 传递给 urlopen(url)

        # remove this line req = urllib.request(url)
        response = urlopen(url)
        data = json.loads(response.read())
        

        3) 在此处查看类似错误 TypeError: 'module' object is not callable

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-15
          • 1970-01-01
          • 2021-12-24
          • 2017-01-12
          相关资源
          最近更新 更多