#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
import os
import sys
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 updateput(self,key,value):
new_value=self.get(key)+","+value
replace_property(self.file_name, key + '=.*', key + '=' + new_value, True)
print("%s更新成功!!!"%(new_value))
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)
def update_properies(key,value):
file_path = '/Users/lei/Desktop/python_project/demo/Jenkins.properties' #文件不会变,不需要传参
props = Properties(file_path) # 读取文件
listdata=props.get(key).split(",")
if value in listdata:
print("%s已经存在不需要更新!!!"%(value))
else:
props.updateput(key, value) # 修改/添加key=value
print()
# print ("props.has_key('key_a')=" + str(props.has_key('key_a'))) # 判断是否包含该key
if __name__ == "__main__":
key="branch"
value="121321"
# key=sys.argv[1]
# value=sys.argv[2]
update_properies(key,value)