Python读取并修改属性文件

Python中并没有直接操作属性文件的类库。

要完成这样的一个操作需要我们自己实现,首先要明确的就是属性文件本身的性质决定了里面的数据的存储都是基于键值对的方式。因此,在数据模型的 选择上字典是最合适的不过的了。下面的实现方式也是基于文件读写和字典的操作来实现的。

    这段程序可以用来修改centos下面的网络配置

# -*- coding: utf-8 -*-
'''
Created on Feb 26, 2016
parser -- shortdesc
this is a utils used to read and write configure file
which is stored by the key-value formate(key=value)
@author: raul
@copyright: 2014 . All rights reserved.
@license: license
@contact: sdau_fuzhaokun@163.com
@deffield updated: Updated
'''
import logging
def load_cfg(f_path):
import os
k_v = {}
if os.path.exists(f_path):
with open(f_path) as f:
for line in f:
pair = line.strip().split('=')
if len(pair) == 2:
k_v[pair[0]] = pair[1]
else:
err = f_path + ' 不存在'
logging.warn(err)
return k_v
def flush_cfg(f_path, k_v):
with open(f_path, 'w') as f:
content = ''
for key, value in k_v.items():
line = key + '=' + value + '\n'
content += line
f.write(content)
def get_value(f_path, key):
'''
根据文件路径和键值获取配置的值
'''
k_v = load_cfg(f_path)
return k_v.get(key, '')
def update_value(f_path, key, value):
'''
添加或更新配置文件中的某个项
'''
k_v = load_cfg(f_path)
k_v[key] = value
flush_cfg(f_path, k_v)
def remove_value(f_path, key):
'''
根据键值删除某配置项
'''
k_v = load_cfg(f_path)
k_v.pop(key)
flush_cfg(f_path, k_v)
if __name__ == "__main__":
f_path = "/etc/sysconfig/config-scripts/ifcfg-enp5s0"
key = "DEVICE"
print get_value(f_path, key)
# update_value(f_path, key, key)

No comments yet.

Leave a comment

Comment form

All fields marked (*) are required

返回顶部
跳到底部