Maraigue風。

Maraigue(H. Hiro)のブログ

[プログラミング][Python] 簡易文法チェッカー

2008年04月23日 18時27分36秒 | プログラミング
事の発端は、Twitterでのこの発言。



maraigue: PerlやRubyはruby -e "script"でスクリプト実行できるけど、Pythonはshとかと同じでpython -c "script"なのね。
http://twitter.com/maraigue/statuses/794964644

gan2: @maraigue Perl や Ruby の -c は Python では何になってるのか気になる
http://twitter.com/gan2/statuses/794965707



PerlやRubyでは、コマンドラインで「ruby -c myscript.rb」のように入力することで、スクリプトの文法のチェックのみを行うことができる。

ところがPythonでは、そのような機能はpythonインタプリタには無いようなのである(文法チェック用の外部ツールは存在する)。

そこで簡易的な文法チェックスクリプトを作ってみた。
以下のシェルスクリプトを適当な名前のファイル(例えば pysyntax)に保存し、実行権限を与える。(※全角の円記号は半角に直して下さい)

#!/bin/sh
( echo "import sys¥nsys.exit()"; cat $1 ) | python -

その上で、シェル上で

$ ./pysyntax myscript.py

のように入力すると、文法に問題がなければ何も表示されず、文法に問題があればそのエラーが表示される。
なお、引数に与えるスクリプトがカレントディレクトリにない場合、ひょっとしたら上手くいかないかもしれません。


仕組みはいたって簡単で、引数に与えたファイルの先頭に

import sys
sys.exit()

の2行を付け加えたうえで、pythonインタプリタに実行させているのである。sys.exit()以下は実行はされないが、スクリプトの解析の対象にはなるため、そこで文法エラーがあればpythonインタプリタがエラーメッセージを出してくれる、という仕組みである。


最新の画像もっと見る