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を使用している場合は、Python3.xのライブラリファミリーへの変更に関する注意事項を確認してください。urllib

注:urllib2モジュールは、urllib.requestおよびurllib.errorという名前のPython3のいくつかのモジュールに分割されています。2to3ツールは、ソースをPython 3に変換するときに、インポートを自動的に適応させます。

あなたの場合、使用したいライブラリはにありますurllib.request

または、Windowsマシンで、Linuxボックスと同じバージョンのPythonを使用することを選択します。同じコードベースを持つ2つのプラットフォームでPython3.xを使用する際には、他にもいくつかの注意点がありますが、完全には考慮していません。

于 2013-01-26T16:24:30.303 に答える