Skip to content
2月 12 / rakkyoo

python2.7で文字コードを指定してファイルを開く

python2.7で日本語を含む文字列のファイル出力をしたとき,

1
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

というエラーが出て,ファイル出力ができないことがありました.

「print」で出力すると,画面には表示されるのですが,
ファイル出力や結果をパイプでpbcopyしたり,「>>」でリダイレクトをしてもエラーになって止まってしまいます.

相当困ってしまったのですが,,,

入出力共にutf-8でのファイル出力の場合は,import codecsを使えば問題なく出来ました.

1
2
3
4
import codecs
 
in_f = codecs.open('in_file_name.txt','r','utf-8')
out_f = codecs.open('out_file_name.txt','w','utf-8')

といったように書けば大丈夫に.

でも,パイプでpbcopyなどしたときは相変わらず,エラーをはいて止まってしまいます.
この場合は,,,

1
2
3
4
import codecs
import sys
 
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)

としておけば,問題なくpbcopyやリダイレクトを使うことができました.

困ったときに「import codecs」で,なんとか仕事ができました.

[`twib` not found]

Leave a comment

CAPTCHA


This blog is kept spam free by WP-SpamFree.