« 今日もお空は日本晴れ その2 | トップページ | ケンウッド・ショールーム 「大人の音楽講座・オーディオ編」 »

2010年12月 5日 (日)

[Python S60 2.0.0] sysリロード後の注意点 「とりあえず解決」

2010-12-05(日)晴れ

 [Python S60 2.0.0]でsys.setdefaultencoding('utf-8') を実行できるようにするため、以前の記事でsysのリロードを行ないました。が、その副作用で、リロード後は print()関数が使えなくなる現象がありましたが、何とか解決できました。
  以前の記事:「[Python S60 2.0.0] sys.setdefaultencoding('utf-8') 実行の件2
          「[Python S60 2.0.0] sysリロード後の注意点

 策としては、sysリロード前の sys.stdout を控えておいて、sysリロード後に戻すというものです。

---- 今までの駄目だった例 -----------
#-*- coding:utf-8 -*-
import sys
print 'aaaa'
reload(sys)
print 'syspath | ',sys.path
-----------------------------------

上記スクリプトの実行結果は下のように print ('aaaa')しか出力されません。リロード後のprint  'syspath | ',sys.path の出力はありません。

Ssce0081

------- 新しい処理例 --------------------
#-*- coding:utf-8 -*-
import sys
wk = sys.stdout   #<-------  バックアップを取る
print 'aaaa'
reload(sys)
sys.stdout = wk   #<-------  バックアップを代入する
print 'syspath | ',sys.path
----------------------------------------

 上記スクリプトの実行結果は下のように最後の print 'syspath | ',sys.path まで出力されました。

Ssce0082

 実際のスクリプトに使用するコーディングは以下のようにすることにしました。
これで、Python 1.4.x および Python 2.0.0 双方で動くようになります。
-------------------------------------------
import sys
if not hasattr(sys, "setdefaultencoding"):
    wk = sys.stdout
    reload(sys)
    sys.stdout = wk
sys.setdefaultencoding('utf-8')
--------------------------------------------

 

|

« 今日もお空は日本晴れ その2 | トップページ | ケンウッド・ショールーム 「大人の音楽講座・オーディオ編」 »

Python」カテゴリの記事

アプリケーション」カテゴリの記事

携帯電話」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/513620/50209488

この記事へのトラックバック一覧です: [Python S60 2.0.0] sysリロード後の注意点 「とりあえず解決」:

« 今日もお空は日本晴れ その2 | トップページ | ケンウッド・ショールーム 「大人の音楽講座・オーディオ編」 »