Python讀寫properties檔案

2021-07-14 19:32:23 字數 2726 閱讀 1929

最近用python寫個工具,涉及到properties檔案的讀寫操作。發現python並沒有提供操作properties檔案的庫,只有乙個 configparser 類來支援 .ini 檔案的讀寫,這顯然不是我想要的,於是一番折騰後整出下面這個工具類:

###property.py

#!/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, e:

raise e

else:

fopen.close()

def has_key(self, key):

return self.properties.has_key(key)

def get(self, key, default_value=''):

if self.properties.has_key(key):

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 parse(file_name):

return properties(file_name)

file = 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)

file.write(line) #寫入臨時檔案

file.write('\n' + to_str)

r_open.close()

file.seek(0)

content = file.read() #讀取臨時檔案中的所有內容

if os.path.exists(file_name):

os.remove(file_name)

w_open = open(file_name,'w')

w_open.write(content) #將臨時檔案中的內容寫入原檔案

w_open.close()

file.close() #關閉臨時檔案,同時也會自動刪掉臨時檔案

else:

print "file %s not found" % file_name

###使用方式:

在要使用property工具的python檔案中匯入property.py檔案即可使用

示例(test.py):

#!/usr/bin/python

# -*- coding: utf-8 -*-

import property

file_path = '/users/billy/desktop/bak/test.properties' #要操作的properties檔案的路徑

props = property.parse(file_path) #讀取檔案

props.put('key_a', 'value_a') #修改/新增key=value

print props.get('key_a') #根據key讀取value

print "props.has_key('key_a')=" + str(props.has_key('key_a')) #判斷是否包含該key1

測試效果:

注意,操作的目標檔案要存在,否則報錯:

###參考文件

python實用指令碼(1):讀取properties檔案

Python 今天抽空學習了 Property

1 property使方法像屬性一樣呼叫 property可以把乙個例項方法變成其同名屬性,以支援.號訪問,它亦可標記設定限制,加以規範 2 property成為屬性函式,可以對屬性賦值時做必要的檢查,比如在setter方法裡加過濾判斷條件。3 顯得相對簡潔一些,相比自定義的get和set方法,pr...

Uiautomator讀取properties檔案

1.建立assets資料夾 工程上右鍵new folder assets folder 2.在assets資料夾中建立prop檔案 在assets資料夾中右鍵new file,輸入名稱 prop 3.在prop檔案中新增引數,格式為 key value 如 time 100 name qq 4.封裝...

properties檔案與Properties類

當我們寫乙個簡單程式 例如圖書管理 快遞管理等 時,經常會有一些困擾,我們上一次錄入的物件資訊,下一次都不能儲存。在我們學習了檔案的io操作後,也許可以將這些資訊寫入檔案中,下一次執行程式時就可以載入資料。這些資訊的儲存有一些成熟的格式,比如說xml,json等,我們先來學習一下.propertie...