Python 2 to Python 3 : TypeError: 'module' object is not callable
本问题已经有最佳答案,请猛点这里访问。
我正在尝试修改一个用Python2语言编写的代码,该代码使用URLLIB2模块编写。我确实用Python3中的URLLIB2模块修改了我的代码,但我得到了一个错误:
1 2 3 | req = urllib.request(url) TypeError: 'module' object is not callable |
我在这里做错什么了?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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)) |
号
更改线条
1 2 | req = urllib.request(url) response = urllib.urlopen(req) |
到:
1 2 | req = urllib.request.Request(url) response = urllib.request.urlopen(req) |
号
您可以在此模块中找到更多信息**https://docs.python.org/3/library/urlib.request.html_urlib.request.request**https://docs.python.org/3/library/urlib.request.html_urlib.request.urlopen
urllib.request是一个模块。你在22号线给模块打电话…
1 | req = urllib.request(url) |
。
要修复,请执行以下操作:
1)顶部导入:
1 | from urllib.request import urlopen |
2)然后将url传递给urlopen(url)
1 2 3 | # remove this line req = urllib.request(url) response = urlopen(url) data = json.loads(response.read()) |
。
3)见类似错误。类型错误:"模块"对象不可调用
@克瓦马赫什的回答是绝对正确的。我将提供一个支持这两个版本的替代解决方案。使用python的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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