2017-02-14 5 views
0

こんにちは、私はpython 2.7のURLを介して画像を保存しようとしています。特殊文字を含むようなURLがいくつかあります。 のように:http://homegrown.co.in/wp-content/uploads/2014/06/Pl%C3%B6tzlich-Am-Meer.jpgといくつかの特殊文字を持つURLがたくさんあります。ASCIIコード変換

私はコードに従うことによってURLを保存していると私はエラーを取得しています:

def save_image_from_url(url, filename): 
print('Saving {} locally'.format(url)) 
image = requests.get(url) 
with open(os.path.join(IMG_DIR_ABS, filename), 'wb') as f: 
    f.write(image.content) 
    f.close() 

エラー

File "/home/wp-migrate/migrate.py", line 340, in seperate_img_blocks 
    save_image_from_url(url, filename) 
    File "/home/wp-migrate/s3.py", line 50, in save_image_from_url 
    with open(os.path.join(IMG_DIR_ABS, filename), 'wb') as f: 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 16: ordinal not in range(128) 

は、どのように私はこのエラーをキャッチし、私のプロセスを継続すべきです。私はこの時点で停止し続けるループを続けています。これらのURLからイメージを保存するソリューションがある場合は、このエラーを回避してプロセスを続行するのに役立ちます。私のforループの中で私は他のファイルからこの関数をインポートしています。

sys.reloadの後には、私はまだ同じ問題に直面しています。

+0

[UnicodeEncodeError: 'ascii'コーデックは特殊文字でエンコードできません](http://stackoverflow.com/questions/31137552/unicodeencodeerror-ascii-codec-cant-encii-character-at-special) -name) –

+0

"filename"はどこから来ますか? Unicode文字列の場合は、ファイルシステムがサポートしているものにエンコードされていることを確認する必要があります。 –

答えて

-1

保存する前にurllib.quote(filename)を使用できます。

+0

あなたはどのように説明することができます –

+0

早い方が良いです。ファイル名を初期化するときに、関数 '' save_image_from_url(url、urllib.quote(filename)) ''を340行目またはそれ以前に呼び出すときに使用できます。 – VdF

+0

ええ、元の問題を適切に解決するのではなく、醜い回避策です...代わりにユニコードとエンコーディングについて学びましょう。 –

関連する問題