0

我的这门课在 Linux 中表现完美。

class UrlRequestor(object):
    def __init__(self, url, headers, data):
        self.url = url
        self.headers = headers
        self.request = urllib2.Request(url)
        self.data = data
        self.data = data
        if self.data:
            self.request.add_data(self.data)
        for headerName, headerContent in self.headers.iteritems():
            self.request.add_header(headerName, headerContent)
    def open(self):
        self.content = urllib2.urlopen(self.request)
    def getHeader(self, headerName):
        return self.content.info().getheader(headerName)
    def getReturnData(self):
        return dict(json.loads(self.content.read()))
    def getRawReturn(self):
        return self.content.read()}

我一直在尝试在 Windows 上运行它——出现了很多错误,包括缩进,我终于在这一点上卡住了。

我显然缺少 add_data 方法的“位置参数”。虽然我相信这是一个更大问题的征兆。

这是我拥有的代码。

class UrlRequestor(object):
    def __init__(self, url, headers, data):
        self.url = url
        self.headers = headers
        self.request = urllib2.Request(url)
        self.data = data
        self.data = data
        if self.data:
            self.request.add_data(self.data)
        for headerName, headerContent in self.headers.iteritems():

            self.request.add_header(headerName, headerContent)
    def open(self):
        self.content = urllib2.urlopen(self.request)
    def getHeader(self, headerName):
        return self.content.info().getheader(headerName)
    def getReturnData(self):
        return dict(json.loads(self.content.read()))
    def getRawReturn(self):
        return self.content.read()

我不介意阅读,我不介意指出正确的方向。在这一点上,我很困惑,一点点指点也不会受到伤害。

非常感谢你们。

编辑* ** * ** * ** * ** * ** * ** * ** * ** * ** * ****

有关将来的信息,请检查 python 版本,安装 2.7.3 并运行与 linux 上完全相同的代码,没有问题。

4

1 回答 1

1

如果您使用的是 Python 2.7.x,import urllib2请放在文件的开头。

如果您使用的是 Python 3.x,请注意urllib有关Python 3.x 中库系列更改的说明:

注意: urllib2 模块在 Python 3 中被拆分为多个名为 urllib.request 和 urllib.error 的模块。将源代码转换为 Python 3 时,2to3 工具会自动调整导入。

对于您的情况,您要使用的库可以在urllib.request.

或者,在您的 Windows 机器上,选择使用与 Linux 机器上相同版本的 Python。在具有相同代码库的两个平台上使用 Python 3.x 时可能还有其他一些注意事项,而您并未完全考虑到这些注意事项。

于 2013-01-26T16:24:30.303 回答