国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
每周一題——讀寫配置文件 Python討論區(qū)/精華帖
我的,呵呵,別笑話。
ini文件的格式參照了這里
http://en.wikipedia.org/wiki/Ini_file
也參考了Python的ConfigParser模塊的文檔

IniFileParser.py
代碼:

#!C:\Python24\python.exe

import re
import string

NoSectionException = ‘NoSectionException‘
NoKeyException = ‘NoKeyException‘

class IniFileParser:
   ‘‘‘parse ini file described in http://en.wikipedia.org/wiki/Ini_file. no functions for write, only read. :)‘‘‘
   def __init__(self):
       self.section_obj = dict()

   def load(self, filename):
       f = open(filename, ‘r‘)
       while 1:
           line = f.readline()
           if not line: break
           line = line.strip(‘\n‘)
           line = line.strip()
           # skip comments
           if line == "" or line.startswith(‘;‘) or line.startswith(‘#‘):
               continue
           match_section = re.compile(r‘^\[([\w\s\.]*)\]$‘).match(line)
           if match_section:   # section name line
               line = match_section.group(1) # get section name
               sec_keys = dict()
               self.section_obj[line] = sec_keys
           else:               # key=value line
               re_comment = re.compile(r‘[;#].*‘)
               line = re_comment.sub(‘‘, line) # remove comments in line
               [key, value] = map(string.strip, line.split(‘=‘, 1))
               sec_keys[key] = value
               
       f.close()

   def sections(self):
       result = self.section_obj.keys()
       result.sort()
       return result

   def has_section(self, section):
       return section in self.section_obj.keys()

   def keys(self, section):
       if not self.has_section(section): raise NoSectionException
       result = self.section_obj[section].keys()
       result.sort()
       return result

   def has_key(self, section, key):
       return self.section_obj[section].has_key(key)

   def get_value(self, section, key):
       if not self.has_section(section): raise NoSectionException
       if not self.has_key(section, key): raise NoKeyException
       return self.section_obj[section][key]


Unit Test: TestIniFileParser.py
代碼:

#!C:\Python24\python.exe

import unittest
from IniFileParser import *

class TestIniFileParser(unittest.TestCase):
   def setUp(self):
       self.ini = IniFileParser()
       self.ini.load(‘test.ini‘)

   def testsections(self):
       self.assertEqual(self.ini.sections(), [‘section1‘, ‘section2‘])

   def testhassections(self):
       self.assertTrue(self.ini.has_section(‘section1‘))
       self.assertTrue(self.ini.has_section(‘section2‘))
       self.assertFalse(self.ini.has_section(‘section3‘))

   def testkeys(self):
       self.assertEqual(self.ini.keys(‘section1‘), [‘var1‘, ‘var2‘])
       self.assertEqual(self.ini.keys(‘section2‘), [‘var1‘, ‘var2‘])
       self.assertRaises(NoSectionException, self.ini.keys, ‘section3‘)

   def testhaskey(self):
       self.assertTrue(self.ini.has_key(‘section1‘, ‘var1‘))
       self.assertTrue(self.ini.has_key(‘section1‘, ‘var2‘))
       self.assertTrue(self.ini.has_key(‘section2‘, ‘var1‘))
       self.assertTrue(self.ini.has_key(‘section2‘, ‘var2‘))

   def testgetvalue(self):
       self.assertEqual(self.ini.get_value(‘section1‘, ‘var1‘), ‘foo‘)
       self.assertEqual(self.ini.get_value(‘section1‘, ‘var2‘), ‘doodle‘)
       self.assertEqual(self.ini.get_value(‘section2‘, ‘var1‘), ‘baz‘)
       self.assertEqual(self.ini.get_value(‘section2‘, ‘var2‘), ‘shoodle‘)
       self.assertRaises(NoSectionException, self.ini.get_value, ‘section3‘, ‘var1‘)
       self.assertRaises(NoKeyException, self.ini.get_value, ‘section1‘, ‘var3‘)

if __name__ == ‘__main__‘:
   #unittest.main()
   suite = unittest.makeSuite(TestIniFileParser)
   unittest.TextTestRunner(verbosity=2).run(suite)


ini file for test: test.ini
引用:

[section1]

; some comment on section1
var1 = foo
var2 = doodle ; some comment on section1.var2

[section2]

# some comment on section2
var1 = baz # some comment on section2.var1
var2 = shoodle

# [section3]
# var1 = bar
; var2 =



_________________
I like Gentoo Linux!
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
delphi對ini文件的操作
使用C#讀寫ini配置文件-程序開發(fā)-紅黑聯(lián)盟
C# 操作INI文件
Python 簡潔ini讀寫 - 代碼分享 - 開源中國社區(qū)
python3操作INI格式文件
python 解析ini 文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服