読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

EmacsのdabbrevでPythonのモジュール名と関数などを補完してみる

Emacs Python

Emacsdabbrevで、Pythonのモジュール名と関数などを動的略語展開をするための下準備として、Webから読み込んで単語をテキストファイルに書き出すスクリプトを書いてみた。


python-mode(python.el)のM-tabでの補完機能は望んだものが出てこなかったりするから、dabbrevで補うと便利かも。


dabbrevの詳しい説明は『Meadow/Emacs memo: テキストの補完入力 ― abbrev ,定型句』さんを参照。

#!/usr/bin/env python
# *-# -*- coding: utf-8 -*-

import re
import urllib

def module_index():
    url = 'http://docs.python.org/lib/modindex.html'
    s = urllib.urlopen(url).read()
    #get module name
    r = re.compile('<tt class="module">(?P<module_name>.*?)</tt>')
    module_name = r.findall(s)
    module_name.sort()
    return module_name

def function_index(module_list):
    function_name = []
    error_module = []
    for module in module_list:
        try:
            m = __import__(module)
            function_name += dir(m)
        except:
            error_module.append(module)
    #function_name = list(set(function_name))
    #function_name.sort()
    #print func_name_set
    #print "error------->",error_module
    return function_name


def file_save_cwd(data):
    import os,os.path
    cwd_path = os.getcwd() + '/'
    file_path = os.path.join(cwd_path ,"Module_Index_Text.txt")
    file = open(file_path,"w")
    file.write(data)
    file.close
    print "save to: %s" % file_path

    
if __name__ == '__main__':
    m = module_index()
    mf = m + function_index(m)
    mf_set_list = list(set(mf))
    mf_set_list.sort()
    str = "\n".join(mf_set_list)
    #print str
    file_save_cwd(str)

エラーで読み込めないのは省いた。
あるものすべて取得しようとするので、使わない単語は削った方がいいかも。
重複しないようにしたけど単語5,000超えてるし(´・ω・`)