s3cmdで日本語のファイル名のものをダウンロードするためのメモ
AWSのS3のファイル操作などを便利にできるツールのひとつにs3cmdがありますが、
それで日本語名のファイルをダウンロードできなかったときにあれこれやったメモ。
s3://バケット名/hoge/テスト.txt
のようなファイルがあったとします。
これを
s3cmd get s3://バケット名/hoge/テスト.txt
と、やろうとしたら、
Problem: UnicodeEncodeError:('ascii', 〜
というようなエラーが出て、ダウンロードできず。
調べていたら、s3cmdはPythonで書かれていて、
Pythonのデフォルトエンコーディングがasciiになっているのが原因のよう。
Pythonのインストールディレクトリの/site-packagesの下にsitecustomize.pyを置けばいいとのこと。
だけど、まずPythonのディレクトリを探したら、いっぱいあって、どれだか分からず
手当たりしだいやることに。
sudo find / -name site-packages
Macで標準で入ってるPythonだと、以下の場所にあるらしい。
/Library/Python/2.x/
ので、自分が使ってるPythonのバージョンは2.6なので
sudo vi /Library/Python/2.6/site-packages/sitecustomize.py
以下の内容を記述
import sys sys.setdefaultencoding('utf-8')
で、設定できてるか確認。
$ python Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() 'utf-8' >>>
できた!
からの、
s3cmd get s3://バケット名/hoge/テスト.txt
で、無事にダウンロードすることができました。
参考にさせていただいたリンク
[Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。 - SumiTomohikoの日記