本文整理汇总了Python中karesansui.lib.dict_op.DictOp.isset方法的典型用法代码示例。如果您正苦于以下问题:Python DictOp.isset方法的具体用法?Python DictOp.isset怎么用?Python DictOp.isset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类karesansui.lib.dict_op.DictOp
的用法示例。
在下文中一共展示了DictOp.isset方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _pre_write_conf
# 需要导入模块: from karesansui.lib.dict_op import DictOp [as 别名]
# 或者: from karesansui.lib.dict_op.DictOp import isset [as 别名]
def _pre_write_conf(self,conf_arr={}):
# Change permission to be able to read/write data kss group.
if os.path.exists(COLLECTD_DATA_DIR):
if os.getuid() == 0:
r_chgrp(COLLECTD_DATA_DIR,KARESANSUI_GROUP)
r_chmod(COLLECTD_DATA_DIR,"g+rwx")
r_chmod(COLLECTD_DATA_DIR,"o-rwx")
dop = DictOp()
dop.addconf("__",conf_arr)
if dop.isset("__",["python"]) is True:
dop.cdp_unset("__",["python","Plugin","python","@ORDERS"],multiple_file=True)
orders = []
orders.append(['Encoding'])
orders.append(['LogTraces'])
orders.append(['Interactive'])
orders.append(['ModulePath'])
orders.append(['Import'])
orders.append(['Module'])
dop.cdp_set("__",["python","Plugin","python","@ORDERS"],orders,is_opt_multi=True,multiple_file=True)
return dop.getconf("__")
示例2: __init__
# 需要导入模块: from karesansui.lib.dict_op import DictOp [as 别名]
# 或者: from karesansui.lib.dict_op.DictOp import isset [as 别名]
class shConfParser:
_delim = "="
_new_delim = "="
_comment = "#"
_multidefine = False
_reserved_key_prefix = "@"
_module = "sh_conf_parser"
def __init__(self,paths=[]):
self.dop = DictOp()
self.dop.addconf(self._module,{})
self.set_source_file(paths)
def set_delim(self, delim="="):
self._delim = delim
def set_new_delim(self, delim="="):
self._new_delim = delim
def set_comment(self, comment="#"):
self._comment = comment
def set_multidefine(self, multidefine=False):
self._multidefine = multidefine
def set_reserved_key_prefix(self, prefix="@"):
self._reserved_key_prefix = prefix
def set_source_file(self,paths=[]):
if type(paths) == str:
paths = [paths]
self.paths = paths
return True
def get_source_file(self):
return self.paths
def source_file(self):
return self.get_source_file()
def read_conf(self):
retval = {}
for _afile in self.source_file():
res = ConfigFile(_afile).read()
orders = []
for _aline in res:
_aline = _aline.rstrip('\r\n')
regex_str = "^(?P<comment>%s)?[ \t]*(?P<key>[^%s ]+)[ \t]*%s *(?P<value>.*)$" % (self._comment,self._delim,self._delim,)
regex = re.compile(r"%s" % regex_str)
m = regex.match(_aline)
if m:
comment = m.group('comment')
key = m.group('key')
value = m.group('value')
if not value.rfind(self._comment) == -1:
value = value[:value.rfind(self._comment)]
if self._multidefine and self.dop.isset(self._module,[_afile,key]) is True:
new_value = self.dop.get(self._module,[_afile,key])
if type(new_value) == str:
new_value = [new_value]
if not value in new_value:
new_value.append(value)
else:
new_value = value
self.dop.set(self._module,[_afile,key],new_value)
if not key in orders:
orders.append(key)
if comment is not None:
self.dop.comment(self._module,[_afile,key])
orders_key = "%sORDERS" % (self._reserved_key_prefix,)
self.dop.set(self._module,[_afile,orders_key],orders)
#self.dop.preprint_r(self._module)
return self.dop.getconf(self._module)
def _value_to_lines(self,value):
lines = []
for _k,_v in value.iteritems():
try:
if _v['action'] == "delete":
continue
except:
pass
try:
val = _v['value']
comment = False
#.........这里部分代码省略.........
示例3: __init__
# 需要导入模块: from karesansui.lib.dict_op import DictOp [as 别名]
# 或者: from karesansui.lib.dict_op.DictOp import isset [as 别名]
#.........这里部分代码省略.........
if re.match("^[A-Z]+[a-z]",_k):
aline += "%s%-18s%s%s" % (_prefix,_k,self._new_delim,_val,)
if post_comment is not None:
aline = "%s %s" % (aline,post_comment,)
if aline != "":
lines.append(aline)
return lines
def write_conf(self,conf_arr={},dryrun=False):
retval = True
self.dop.addconf(self._module,conf_arr)
orders_key = "%sORDERS" % (self._reserved_key_prefix,)
eof_key = "%sEOF" % (self._reserved_key_prefix,)
for _path,_v in conf_arr.iteritems():
if _path[0:1] != "/":
continue
lines = []
try:
_v['value']
except:
continue
exclude_regex = "^%s[A-Z0-9\_]+$" % self._reserved_key_prefix
# まずはオーダの順
if self.dop.isset(self._module,[_path,orders_key]) is True:
for _k2 in self.dop.get(self._module,[_path,orders_key]):
try:
if type(_k2) == str:
_k2 = [_k2]
_search_key = [_path] + _k2
is_opt_multi = False
if _k2[0] in self.opt_multi:
_tmp_conf = self.dop.get(self._module,_search_key)
# multiとsectがかぶったオプションの対応 strならmulti
if type(_tmp_conf[0]) == str:
is_opt_multi = True
if is_opt_multi is True:
_k2.pop()
new_lines = self._new_lines(_search_key,_k2)
lines = lines + new_lines
self.dop.unset(self._module,_search_key)
except:
pass
# オーダにないものは最後に追加
for _k2,_v2 in self.dop.get(self._module,[_path]).iteritems():
#if _k2 != orders_key:
m = re.match(exclude_regex,_k2)
if not m:
try:
if type(_k2) == str:
_k2 = [_k2]
_search_key = [_path] + _k2
示例4: __init__
# 需要导入模块: from karesansui.lib.dict_op import DictOp [as 别名]
# 或者: from karesansui.lib.dict_op.DictOp import isset [as 别名]
#.........这里部分代码省略.........
pass
elif com1_aline[0:1] != self._comment:
com1_aline = "%s %s" % (self._comment,com1_aline,)
comment_1.append(com1_aline)
except:
pass
comment_2 = _v['value'][1][1]
try:
if comment_2[0:1] != self._comment:
comment_2 = "%s %s" % (self._comment,comment_2,)
except:
pass
lines = lines + comment_1
aline = "%s%s%s%s" % (_prefix,_k,self._new_delim,val,)
if comment_2 is not None:
aline = "%s %s" % (aline,comment_2,)
lines.append(aline)
except:
pass
return lines
def write_conf(self,conf_arr={},dryrun=False):
retval = True
self.dop.addconf(self._module,conf_arr)
orders_key = "%sORDERS" % (self._reserved_key_prefix,)
eof_key = "%sEOF" % (self._reserved_key_prefix,)
for _path,_v in conf_arr.iteritems():
if _path[0:1] != "/":
continue
lines = []
try:
_v['value']
except:
continue
exclude_regex = "^%s[A-Z0-9\_]+$" % self._reserved_key_prefix
# まずはオーダの順
if self.dop.isset(self._module,[_path,orders_key]) is True:
for _k2 in self.dop.get(self._module,[_path,orders_key]):
m = re.match(exclude_regex,_k2)
if not m:
try:
if type(_k2) == list:
_k2 = _k2.pop()
value = {}
value[_k2] = _v['value'][_k2]
lines = lines + self._value_to_lines(value)
self.dop.unset(self._module,[_path,_k2])
except:
pass
# オーダにないものは最後に追加
for _k2,_v2 in self.dop.get(self._module,[_path]).iteritems():
#if _k2 != orders_key and _k2 != eof_key:
m = re.match(exclude_regex,_k2)
if not m:
try:
value = {}
value[_k2] = _v2
lines = lines + self._value_to_lines(value)
except:
pass
# 最後のコメント用の処理
if self._footer != "":
if self.dop.isset(self._module,[_path,eof_key]) is False:
self.dop.cdp_set(self._module,[_path,eof_key],"",force=True)
eof_val = self.dop.get(self._module,[_path,eof_key])
eof_action = self.dop.action(self._module,[_path,eof_key])
eof_comment = self.dop.comment(self._module,[_path,eof_key])
try:
key = " %s - %s on %s" % (self._footer,self._module,time.strftime("%c",time.localtime()))
value = {}
value[key] = {}
value[key]["value"] = eof_val
value[key]["action"] = eof_action
value[key]["comment"] = eof_comment
self.set_new_delim(delim=" ")
lines = lines + self._value_to_lines(value)
except:
pass
if dryrun is False:
if len(lines) > 0:
ConfigFile(_path).write("\n".join(lines) + "\n")
else:
#pass
print "\n".join(lines)
return retval