実際には、これを達成するためのベストプラクティスの要求として、質問をよりよく言い表すことができます。これは簡単でなければならないので、イライラしています。python 3とフラスコで使用するurllib2を置き換えるpythonモジュールはありますか?
私はFlask by Exampleのチュートリアルに従っています。私はpython 3の最新バージョンを使用しています。テキストに使用されているurllib2はpython 3では見つかりません。テキストから、データをダウンロードするurllib2と、パラメータを正しくエンコードするurllibが必要です。ちょうど1つの関数、get_weather私は動作する更新されたアプローチを見つけることができません。
私が達成しようとしていることを示すために、関連するコード行を示します。私はPython 3のフラスコの最新バージョンを使用しています.Json APIをダウンロードしようとするまで問題が表示されなかったので、テンプレートファイルのリストは表示しません。
したがって、ファイルへの最初の変更には、urllibとjsonのインポートが含まれます。この本はurllib2が利用可能になった2015年のものです。私たちはopenwheathermap.orgからWeatherを取得しようとしています。 urllib2が見つからなかったので、私は本のコードを少し修正しました。
私は何かアドバイスをいただければ幸いです
WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather?q={}&APPID=myappid"
def get_weather(query):
query = urllib.parse.quote(query)
url = WEATHER_URL.format(query)
data = urllib.request.urlopen(url).read()
parsed = json.loads(str(data))
weather = None
if parsed.get('weather'):
weather = {'description': parsed['weather'][0]['description'],
'temperature': parsed['main']['temp'],
'city': parsed['name'],
'country': parsed['sys']['country']
}
return weather
を持っています。
おかげで、 ブルース
私がリクエストライブラリーは非常に人気があると思います。 – Vasif
urllib2のドキュメントに記載されているとおり: urllib2モジュールは、urllib.requestとurllib.errorという名前のPython 3のいくつかのモジュールに分割されています。 2to3ツールは、ソースをPython 3に変換する際に、自動的にインポートを適合させます。 –
あなたが話しているこの問題は何ですか?もちろん、これは標準ライブラリ 'urllib'パッケージで行うことができます。モジュールを正しい方法でインポートするだけです。 – Abdou