nasec blog

プログラミングやPCについての覚え書き
SEARCH
PROFILE
北陸で働くSIer。主にWEB系。
効率化と情報共有を常に模索中。。
音ゲーが好きです。
好奇心旺盛で興味のあるものは何でも飛びつきます!
RECOMMEND
CATEGORIES
ARCHIVES
RECENT COMMENT
  • mkdirで作成したディレクトリに作成と同時に移動する
    h41k4 (04/22)
  • とぅ
    h41k4 (04/22)
  • mkdirで作成したディレクトリに作成と同時に移動する
    totoro (03/30)
  • Xperiaでファイルのダウンロードに失敗する
    h41k4 (12/14)
  • Xperiaでファイルのダウンロードに失敗する
    きむら (12/14)
  • Xperiaでファイルのダウンロードに失敗する
    h41k4 (12/01)
  • Xperiaでファイルのダウンロードに失敗する
    きむら (12/01)
  • 指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。
    ゆう (03/16)
  • ネットマーブル(チョコマ)のパズル「ボタン」
    Yero (03/12)
RECENT TRACKBACK
  • 指定したデバイス、パス、またはファイルにアクセスできません。適切なアクセス許可がない可能性があります。
    プレサーチ (11/19)
ブログパーツ
フィードメーター - nasec blog
OTHERS
SPONSORED LINKS
みんなのブログポータル JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

| - | | - | - |
Pythonで500 Internal Server Errorをデバッグする方法
JUGEMテーマ:コンピュータ

最近Python/CGIの開発を行っていましたが、
エラーコード500 Internal Server Errorが出てしまうことがあり、
何が原因か分からず困ってしまいました。

デバッグする方法がないかと調べてみると、ありました!
簡単にInternal Server Errorの原因を調べることができるようです。

方法は下記の行を追加するだけです。

import cgitb
cgitb.enable()

cgitb モジュールの enable() は、CGIスクリプトの実行時に発生したエラーの内容をブラウザに送信します。



参考:
エラーの内容を表示する - Python CGIプログラミング入門
http://www.gesource.jp/programming/python/cgi/0116.html


簡単にデバッグが行えますね。使いこなしていきたいです。




| Python | 21:57 | comments(0) | trackbacks(0)
XMLで不正な文字列(>記号)を使用してもエラーにならない?!
 xml.dom.minidom.parse()を使用してXMLのパースを行っていましたが、
タグの要素内で不正と思われる記号を使用してもエラーが出ずハマってしまいました。

エラーになる例
<test>aaa&aaa</test>

エラーにならない例
<test>aaa>aaa</test>

&マークや<記号だと
xml.parsers.expat.ExpatError: not well-formed (invalid token):
と表示されるのに、>は表示されない・・。

属性の中で">"を記載した際はエラーになりました。

調べてみると下記のような原因だったようです。
http://www.xmlmaster.org/article/d01/c02/より
「>」は、そのまま要素の内容として判断されます。これは、要素の内容に「>」のみが出現しても、必ずペアとして記述される「<」また は「</」が出現していないため、文字の「>」として判断されるからです(開始タグや終了タグの終わりとして判断しない)。

パーサの動作を考えれば納得ですね><。難しいです。


| Python | 20:21 | comments(0) | trackbacks(0)
Python初心者 - exit()で抜けられなくなった
 先日の記事で「Pythonで文字コードの扱いにハマった件 」を書いたのですが、
その際にいろいろ試していたらexit()できなくなってしまいました・・。

結論としてはsys.exit()またはCtrl+Dで抜けることが可能です。

抜けられなくなった発端は以下。


http://d.hatena.ne.jp/SumiTomohiko/20070120/1169300624 より
このオプションを使用すると、site.py以外でもsys.setdefaultencoding関数を使用することができます。
$ python -S
Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02)
[GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdout__', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdefaultencoding', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'version', 'version_info', 'warnoptions']
>>> sys.setdefaultencoding('utf-8')
http://psyto.s26.xrea.com/python/PQR2.4/PQR2.4.ja.htmlによるとpython -Sは
-S 初期化時に import site を実行しない
と記載されています。

http://d.hatena.ne.jp/paz3/20091028/1256728600を参考に
sys.exit()
で抜け出すことが出来ました。もしくはCtrl+Dでも可能です。








| Python | 20:46 | comments(0) | trackbacks(0)
Pythonで文字コードの扱いにハマった件
最近Pythonをさわる機会があったのですが、
スクリプトを実行すると

 'ascii' codec can't encode characters in position 87-89: ordinal not in range(128)

というエラーになるという現象に遭遇しました。

これは環境設定が正しく行われていないためのようで、下記URLを参考にして
環境設定してみました。

 [Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。 - SumiTomohikoの日記
http://d.hatena.ne.jp/SumiTomohiko/20070120/1169300624

解決方法

以下の/usr/lib/python2.4/site-package/sitecustomize.pyを作成してください。

import sys
sys.setdefaultencoding('utf-8')

しかし、作成しても設定が反映されず、テストコマンドでもasciiのままでした。

そこで、下記を参考にしてみたところ、Python -vで表示されるライブラリが
/usr/lib/python2.5になっていたことが分かりました。
http://d.hatena.ne.jp/motie/20090615/sitecustomize20090615


/usr/lib/python2.5にsitecustomize.pyを作成したところ、
sys.getdefaultencoding()でutf-8に設定することができましたm(__)m

関連サイト:
http://asalab.daido-it.ac.jp/blog/asakura/2011/01/python-sitecustomize-2/

| Python | 20:17 | comments(0) | trackbacks(0)