python使用信號量動態(tài)更新配置文件的操作
一種小技巧,可以讓python捕獲信號量HUP 然后當使用 kill 發(fā)起HUP信號量的時候 捕獲到進行處理,可以處理為重新讀取配置文件并重新賦值,這樣不需要重啟服務也可以讓程序重新讀取配置文件的內(nèi)容
捕獲信號量
import signal import ConfigParser def get_config(): conf = ConfigParser.ConfigParser() conf.read("config.cfg") name = conf.get("test", "name") print(name) def update_config(signum,frame): print("update config") get_config() def ctrl_c(signum,frame): print("input ctrl c") exit(1) # 捕獲HUP signal.signal(signal.SIGHUP, update_config) # 捕獲ctrl+c signal.signal(signal.SIGINT, ctrl_c) print("test signal") get_config() while True: pass
配置文件
$ cat config.cfg [test] # name = "Recar" name = "@@@"
執(zhí)行程序 python
修改配置文件 name為Recar
發(fā)起HUP信號
切到捕獲的信號量看到重新更新了配置文件
這里我開始還有的 from config import name
然后捕獲信號量再重新導入,也就是再執(zhí)行一下 from config import name
這樣是不行的,如果想要重新導入需要 reload(模塊) 但是這里reload不支持 from的形式
我改為 import config 然后在 自定義的信號量處理函數(shù)中 reload(config) 來實現(xiàn)重新載入模塊。
還是推薦使用 ConfigParser 來獲取配置文件好一些。
補充知識:python3-ConfigParser讓配置文件生效
INI文件由節(jié)、鍵、值組成。格式如下:
例如:
[section] name=value name:value
注解使用分號表示(;)。在分號后面的文字,直到該行結(jié)尾都全部為注解。
configparser模塊含有configparser類,主要包含三個模塊:RawConfigParser(),ConfigParser()、SafeConfigParse()這三個方法(三選一),創(chuàng)建一個對象使用對象的方法對配置文件進行增刪改查操作.
from configparser import ConfigParser if __name__ == "__main__": #寫入數(shù)據(jù)到test.ini文件 config=ConfigParser() config.add_section('login') config.set('login','name','test') config.set('login','paw','test') with open("test.ini",'w+') as f : config.write(f) with open("test.ini",'r') as f_read: config.read_file(f_read) print(config.get('login','name')) config.read(f_read) #獲取section print(config.sections()) #獲取key print(config.get('login','name')) #獲取value print(config.get('login','paw')) #獲取某個section下的key,value print(config.options('login')) #判斷section是否存在,存在返回True,不存在返回False print(config.has_section('login')) #方法判斷section下,某個鍵是否存在,存在返回True,不存在返回False print(config.has_option('login','name1'))
刪除
remove_section()方法刪除某個section,remove_option()方法刪除某個section下的鍵 config.remove_section('login','paw')
注:要先read到內(nèi)存
config.read(file)
實際刪除的為內(nèi)存中的,文件中的section的鍵不會減少
以上這篇python使用信號量動態(tài)更新配置文件的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python函數(shù)map()和partial()的知識點總結(jié)
在本篇文章里小編給大家分享了關于python函數(shù)map()和partial()的知識點總結(jié),需要的朋友們可以參考下。2020-05-05Python使用Pandas庫實現(xiàn)MySQL數(shù)據(jù)庫的讀寫
這篇文章主要介紹了Python使用Pandas庫實現(xiàn)MySQL數(shù)據(jù)庫的讀寫 ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07詳解pyinstaller selenium python3 chrome打包問題
這篇文章主要介紹了詳解pyinstaller selenium python3 chrome打包問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10python獲取異常信息exc_info和print_exc的使用
python通過sys.exc_info獲取異常信息,通過traceback.print_exc打印堆棧信息,包括錯誤類型和錯誤位置等信息,本文就來介紹一下具體用法,感興趣的可以了解一下2023-12-12