ConfigParser模塊可以處理像Mysql配置文件格式的數據
以下爲mysql的初始配置文件內容:
[root@localhost ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
接下來使用ConfigParser模塊來生成這樣格式的文件:
#!/usr/local/python3/bin/python3
import configparser
config = configparser.ConfigParser()
config["mysqld"] = {"datadir":"/var/lib/mysql",
"socket":"/var/lib/mysql/mysql.sock",
"user":"mysql",
"symbolic":"0"}
config["mysql_safe"] = {"log-error":"/var/log/mysqld.log",
"pid-file":"/var/run/mysqld/mysqld.pid"
}
with open("my.cnf","w") as f:
config.write(f)
執行腳本,就能在本地生成一個和my.cnf一樣的文件。
說完了寫,那我們看看如何讀取
>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.read("my.cnf") //相當於加載文件
['my.cnf']
>>> config.sections() //查看文件中所有的key,格式像[mysqld]、[mysql_safe]這種的
['mysqld', 'mysql_safe']
>>> config["mysqld"]["datadir"] //獲取值
'/var/lib/mysql'
>>> "mysqld" in config //判斷某key是否在文件中
True
>>> for i in config["mysqld"]: //循環打印key下的所有值
... print(i)
...
datadir
socket
user
symbolic
說完了讀,那我們看看進行修改
>>> import configparser
>>> config = configparser.ConfigParser()
>>> config.read("my.cnf")
['my.cnf']
########讀取##########
>>> secs = config.sections()
>>> print(secs)
['mysqld', 'mysql_safe']
>>> options = config.options("mysqld") //打印"mysqld下的所有鍵"
>>> print(options)
['datadir', 'socket', 'user', 'symbolic']
>>> item_list = config.items("mysqld") //打印"mysqld"下的所有值
>>> print(item_list)
[('datadir', '/var/lib/mysql'), ('socket', '/var/lib/mysql/mysql.sock'), ('user', 'mysql'), ('symbolic', '0')]
>>> val = config.get("mysqld","datadir") //打印某個鍵的值
>>> print(val)
/var/lib/mysql
>>> val = config.getint("mysqld","symbolic")
>>> print(val)
0
######修改######
>>> sec = config.remove_section("mysqld") //相當於把"mysqld"字段下的所有全刪除了
>>> config.write(open("my.cnf","w"))
>>> sec = config.add_section("mysqld") //在文件的末尾添加了一個字段[mysqld]
>>> config.write(open("my.cnf","w"))
>>> config.set("mysqld","User","root") //在[mysqld]字段下添加了user=root
>>> config.write(open("my.cnf","w"))
>>> config.remove_option("mysqld","user") //把[mysqld]字段下的user=root刪除
True
>>> config.write(open("my.cnf","w"))