<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在做某一個專案時,在讀組態檔中,當出現組態檔中沒有對應專案時,如果要設定預設值,以前的做法是如下的:
try: apple = config.get(section, 'apple') except NoSectionError, NoOptionError: apple = None
但當存在很多設定時,這種寫法太糟糕
幸好,在Configparser.get()函數中有一個vars()的引數,可以自定義;注:只能用ConfigParser.ConfigParser;rawconfigparser是不支援的
1、定義函數:
class DefaultOption(dict): def __init__(self, config, section, **kv): self._config = config self._section = section dict.__init__(self, **kv) def items(self): _items = [] for option in self: if not self._config.has_option(self._section, option): _items.append((option, self[option])) else: value_in_config = self._config.get(self._section, option) _items.append((option, value_in_config)) return _items
2、使用
def read_config(section, location): config = configparser.ConfigParser() config.read(location) apple = config.get(section, 'apple', vars=DefaultOption(config, section, apple=None)) pear = config.get(section, 'pear', vars=DefaultOption(config, section, pear=None)) banana = config.get(section, 'banana', vars=DefaultOption(config, section, banana=None)) return apple, pear, banana
這樣就很好解決了讀取組態檔時沒有option時自動取預設值,而不是用rasie的方式取預設值
此方案來之stackoverflow
以這個非常簡單的典型組態檔為例:
[DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.server.com] Port = 50022 ForwardX11 = no
1、config parser 操作跟dict 類似,在資料存取方法基本一致
>> import configparser >>> config = configparser.ConfigParser() >>> config.sections() [] >>> config.read('example.ini') ['example.ini'] >>> config.sections() ['bitbucket.org', 'topsecret.server.com'] >>> 'bitbucket.org' in config True >>> 'bytebong.com' in config False >>> config['bitbucket.org']['User'] 'hg' >>> config['DEFAULT']['Compression'] 'yes' >>> topsecret = config['topsecret.server.com'] >>> topsecret['ForwardX11'] 'no' >>> topsecret['Port'] '50022' >>> for key in config['bitbucket.org']: print(key) ... user compressionlevel serveraliveinterval compression forwardx11 >>> config['bitbucket.org']['ForwardX11'] 'yes'
2、預設設定項[DEFAULT]section 的預設引數會作用於其他Sections
3、資料型別
4、獲取引數值方法 get()
5、引數分隔符可以使用‘=’或‘:’(預設)
6、可以使用‘#’或‘;’(預設)新增備註或說明
[Simple Values] key=value spaces in keys=allowed spaces in values=allowed as well spaces around the delimiter = obviously you can also use : to delimit keys from values [All Values Are Strings] values like this: 1000000 or this: 3.14159265359 are they treated as numbers? : no integers, floats and booleans are held as: strings can use the API to get converted values directly: true [Multiline Values] chorus: I'm a lumberjack, and I'm okay I sleep all night and I work all day [No Values] key_without_value empty string value here = [You can use comments] # like this ; or this # By default only in an empty line. # Inline comments can be harmful because they prevent users # from using the delimiting characters as parts of values. # That being said, this can be customized. [Sections Can Be Indented] can_values_be_as_well = True does_that_mean_anything_special = False purpose = formatting for readability multiline_values = are handled just fine as long as they are indented deeper than the first line of a value # Did I mention we can indent comments, too?
7、寫設定
常見做法:
config.write(open('example.ini', 'w'))
合理做法:
with open('example.ini', 'w') as configfile: config.write(configfile)
1、ConfigParser 在get 時會自動過濾掉‘#’或‘;‘註釋的行(內容);
2、在ConfigParser write之後,設定文字如果有大寫字母’PRODUCT’會變為小寫字母’product’,並不影響設定的正確讀寫。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45