2010年03月28日

【PythonのHELP】Pythonのhelp()関数をプロンプトから使うhlpy

 最近、このブログのテーマ外の課題で時間を取られ気がつくと月初の投稿以来、24日もここに書いていない。ネタがないわけでもないのだか、生計を立てる為の生業の為なので、それを優先させて頂いている。こんなブログでも最近はコンスタントにアクセスがある様で、携帯からのアクセスも増えてきた様で、期待はされていないとは思うけど、取敢えず、首記の小ネタでお茶を濁して置く。

 「【PythonのHELP】Pythonにはhelp()関数有ったんだぁ」で紹介した、Pythonモジュールの__doc__を表示してくれる関数は便利なのだが、いくつか使い辛いことがある。

 Pythonのhelp()関数の実行は基本的にPythonの対話モードでの手入力利用を想定したものなので、基本的な使い方は次の通りとなる。

       


[root@l22dm ~]# /usr/local/bin/python2.6
Python 2.6.4 (r264:75706, Nov 5 2009, 23:51:30)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mire.htm
>>> help(mire.htm)
Help on module mire.htm in mire:

NAME
mire.htm

FILE
/usr/local/lib/python2.6/site-packages/mire/htm.py

DESCRIPTION
######################################################################
#00. header(Type) : cgi Content出力。Type:'html'(既定),'xml'
#01. html_header(charset, : html文書の開始タグ一式を標準出力します
# ,title,base :
# ,refresh :
# ,cache,robot:
# ,css,style :
# ,js,author :
# ,generator :
# ,copyright :
# ,keywords :
# ,description:
# ,body) : bodyつまり文書全体の属性定義をリスト付与
#02. html_footer() : html文書の終了タグ一式を標準出力
#03. url2str_list(url) : urlの示す文書を文字列リストで返します
#04. url2str(url,trim=0) : urlを文字列で返します。前後空白除去trim=1
#05. get_charset(s) : str文字列からmeta定義のcharsetを返します
#06. str2unicode(s,charset) : 文字列のunicode化を試みその文字列を返します
#07. cgi_params() : CGI引数を辞書化し返します
#08. param_lst(omit_params : 引数とその値をGET形式'引数名=値'文字列listを
# ,params_dic): 返す「url+'?'+'&'.join()」で活用
#09. tag_encode(lines) : タグ文字のままHTML表示可能な文字列listに変換
#10. display_err(locals() : HTMLヘッダを伴ない、例外発生時の変数状況を
# ,title): locals()で、titleに仕掛けた場所を入れ利用。
#11. pipe(url,Type='xml') : 指定URIを読みそのまま返します。ドメイン外部の
# XMLコンテンツをjavascript活用する中継プログラム

FUNCTIONS
cgi_params()
## CGI引数の辞書化 ##
cgi.FieldStorage()で得られるcgi引数を辞書に収め返す
辞書構造とすることで修正が可能になる他、
必要な既存の引数を引継ぎインタラクティブにページを変化
させるときに便利。
【使い方】
下記の様に引数名を keys()で取得、順不同の為、必要より、
sort()の上、引数名を1つずつ取出し活用すると良い
param_dic = cgi_params()
keys = param_dic.keys()
for k in keys:
value = param_dic[k]
print k,value

:

up downカーソルキーで行送り
またはCtrl+F/Bキーで頁送りして
モジュールの仕様を調べ、
Ctrl+Zで終了

[root@l22dm ~]#


まあ、TelnetまたはSSHの窓を別に開いて叩けば大した手順ではないのでこれでも構わないが、複数回手打ちしていると、モジュール名を2回手打ちしないとならないことと毎回利用するpythonを指定して起動させるのが嫌になってしまう。

 で、Pythonの動的importと引数渡しの機能 を活用し「hlpy <モジュール名>」で実行出来る様にして試た。使って試ると結構軽快に使えるので、例えば「hlpy os.path」等として関数名を確認したりするまに使っている。慣れて来ると、日本語でなくても良ければ標準モジュールの利用もこれで充分だ。

 ソースコードとその導入方法は以下の通り。
    /usr/local/bin/hlpy


#!/usr/local/bin/python2.6
# -*- coding:UTF-8 -*-
"""
# モジュール名指定のみでそのモジュールのヘルプを表示するコマンドスクリプト
"""
__author__ = 'Mire in Japan'
__copyright__ = 'Copyright (c) 2010 Mire'
__license__ = 'GPL'
__url__ = 'http://pythonlife.seesaa.net/article/144859313.html'
__version__ = '0.0.1'


def hlp(m):
"""
動的に指定したモジュールをimportしhelp()関数を実行
"""
__import__(m) #動的に指定したモジュールをimport
help(m) #対話モード利用を想定したPython標準のhelp()関数

from sys import argv #sysモジュール内のコマンド実行時の引数リストargvをimport
from os.path import basename #os.pathモジュール内のpathの最後の名前を返す
#basename関数をimport

if len(argv)==2: #引数が2つまり、引数が1つのみ指定されていたら
hlp(argv[1]) #その引数をモジュール名として hlp()関数を実行
else: #そうでないなら、
print 'Python\'s HELP Script' #プログラム名と
print basename(argv[0]),
print __version__
print __doc__, #このスクリプトの__doc__と
print '\nUSAGE:' #使い方を表示
print '%s <module name>' % (basename(argv[0]))
print 'STATUS:'
print 'argv=', argv


導入手順
  1. 上記ソースコードを「/usr/local/bin/hlpy」として、utf-8で保存する
  2. 「chmod 755 /usr/local/bin/hlpy」として、スクリプトとして直接実行可能なファイルにする。
尚、Windowsの場合は素直に、上記ソースコードをhlpy.py等のファイル名でPathの通るWindowsディレクトリ辺りに保存し、既定のPythonで実行するか、実行するPythonの絶対pathを付けたbatchファイルを作成することになるだろう。

 でも、Windowsの場合、モジュール側の文字コードをShift_JIS系にしていないと、日本語が文字化けして読めないのが、Python2.x系の仕様である。文字列がUncodeとなったPython3では問題ないので、こちらは対策しないが、回避策としては、未利用のバージョンのPythonに必要なモジュールをShift_JIS系で保存し、(嘘書いてましたm(_"_)m削除します)のsite-packages/sitecustomize.pyの文字コード指定をimport sys
sys.setdefaultencoding('UTF-8')でなく、OSの標準表示文字コードであるShift_JIS系に変更して、helpすると良いだろう。当方の場合は、Windowsで作るときも、SSHでLinux側を使うのでこの対策は不要である。また、やらずに書いて申し訳ないが、未使用のPython環境がない時には、virtualenvの利用で個別のPython環境を構築するのも良い選択なのかもしれない。

 尚、余談ながら、例として使った最近のmire.htmlモジュールも近々、公開させて頂くつもりなので興味のある方は待っていて欲しい。
posted by Mire at 04:09 | Comment(0) | TrackBack(0) | Python環境を整える | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/144859313
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
月額見放題1,000円開始キャンペーンバナー(画像ありver)
紺碧の艦隊 ルパン三世 GREAT CHASE クリックプロモーション
<< 2012年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
カテゴリ
タグクラウド
ファン
利用中のオープンソース
最近のコメント
最近の記事
過去ログ
QRコード
レガシーなアプリはいかが?
Dell 法人のお客様ページ
  • 【法人様向け】デル、お得なキャンペーン情報
  • 法人のお客様向け ストレージソリューション
  • 法人のお客様向け ネットワークソリューション
  • 【SOHO法人様向け】デル・オンライン広告限定ページ
  • デル-個人のお客様ページ
  • 【個人のお客様向け】デル・オンライン広告限定ページ
  • オンライン広告限定キャンペーンページ
  • ソフトウェア&周辺機器 パソコン工房
    ツートップインターネットショップ(twotop.co.jp) マウスコンピューター/G-Tune