You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.8 KiB
68 lines
1.8 KiB
#!/usr/bin/python
|
|
# -*- coding: UTF-8 -*-
|
|
|
|
import re
|
|
import os
|
|
import tempfile
|
|
|
|
|
|
class Properties:
|
|
|
|
def __init__(self, file_name):
|
|
self.file_name = file_name
|
|
self.properties = {}
|
|
try:
|
|
fopen = open(self.file_name, 'r')
|
|
for line in fopen:
|
|
line = line.strip()
|
|
if line.find('=') > 0 and not line.startswith('#'):
|
|
strs = line.split('=')
|
|
self.properties[strs[0].strip()] = strs[1].strip()
|
|
except Exception as e:
|
|
raise e
|
|
else:
|
|
fopen.close()
|
|
|
|
def has_key(self, key):
|
|
return key in self.properties
|
|
|
|
def get(self, key, default_value=''):
|
|
if key in self.properties:
|
|
return self.properties[key]
|
|
return default_value
|
|
|
|
def put(self, key, value):
|
|
self.properties[key] = value
|
|
replace_property(self.file_name, key + '=.*', key + '=' + value, True)
|
|
|
|
|
|
def replace_property(file_name, from_regex, to_str, append_on_not_exists=True):
|
|
tmpfile = tempfile.TemporaryFile()
|
|
|
|
if os.path.exists(file_name):
|
|
r_open = open(file_name, 'r')
|
|
pattern = re.compile(r'' + from_regex)
|
|
found = None
|
|
for line in r_open:
|
|
if pattern.search(line) and not line.strip().startswith('#'):
|
|
found = True
|
|
line = re.sub(from_regex, to_str, line)
|
|
tmpfile.write(line.encode())
|
|
if not found and append_on_not_exists:
|
|
tmpfile.write(('\n' + to_str).encode())
|
|
r_open.close()
|
|
tmpfile.seek(0)
|
|
|
|
content = tmpfile.read()
|
|
|
|
if os.path.exists(file_name):
|
|
os.remove(file_name)
|
|
|
|
w_open = open(file_name, 'wb')
|
|
w_open.write(content)
|
|
w_open.close()
|
|
|
|
tmpfile.close()
|
|
else:
|
|
print ("file %s not found" % file_name)
|
|
|
|
|