Home > 未分類 > 簡易パーサ

簡易パーサ

  • Posted by: tai
  • 2008/03/10 15:21
  • 未分類

超x100簡単なパーサを作りました。
なんかPythonぽくないし、泥臭いし、なんかなぁ、って感じはしますが、
まぁ設定ファイルの読み込み程度には使えるでしょう。
多分。


以下、ソース。
————————————————————————-

import os.path

class ConfParser:
  def __init__(self, file):
    self.__values = {}
    if os.path.isfile(file):
      self.__parse(file)

  def __parse(self, file):
    try:
      f = open(file, ‘r’)
    except:
      print(‘### File open error : %s’ % file)
    for line in f:
      self.__parseLine(line)

  def __parseLine(self, line):
    line = line.strip()
    print(line)
    if len(line) != 0 and line[0] != ‘#’:  # comment or empty
      words = line.split(‘=’)
      if len(words) < 2:
        raise(('Invalid value was given. : %s' % line))
      else:
        key = words[0].strip()
        val = words[1].strip()
        self.__values[key] = val

  def get(self, key):
    if key in self.__values:
      return self.__values[key]
    else:
      return None

  def set(self, key, value):
    self.__values[key] = value

  def printVal(self):
    print(self.__values)

————————————————————————-

例えばこんな感じの設定ファイルを読んで、辞書型の変数に保持します。

————————————————————————-

#### Test Configure
# path
HOME = C:/Doduments and Settings/tai
# rootoa
ROOT = C:/
# SYSTEMS
SYSTEM = C:/system32
# PROGRAMS
PROGRAM = C:/Program Files

————————————————————————-

使い方は、
conf = ConfParser(filename)

みたいな感じです。
コンストラクタにファイル名を与えてください。
#はコメントです。
ただし、先頭についているものだけをコメントとみなすので、
行末につけたりしたら、動作に自信はもてませんww
必要な要件書いた後なら多分大丈夫ですが。

あとはsetとgetです。簡単です。

PYLやYAMLなんぞのお世話になるまでも無いほど簡単ですが、
簡単な設定ファイルを読みたいという要件は満たしているので、とりあえずOK。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.taikomatsu.com/2008/03/10/%e7%b0%a1%e6%98%93%e3%83%91%e3%83%bc%e3%82%b5/trackback/
Listed below are links to weblogs that reference
簡易パーサ from memlog

Home > 未分類 > 簡易パーサ

Return to page top