ini配置文件问题

平时我会用到configparser.ConfigParser()来记录ini配置文件,但是近期在开发的时候就遇到一些问题,比如如果value中含有%,会导致无法正常使用set(),当时因为技术问题,就只能通过写入两个%%来解决,后来了解到configparser模块还有一个类是configparser.RawConfigParser(),如果你用这个类来写入含有%的数据,就没有出现问题了。 但是在某些特殊情况下,section中的key因为含有一些特殊值,导致无法使用configparser模块,比如C:\Program Files\VeraCrypt\veracrypt.inf,没有办法,就只能使用QSetting来解决,相关代码如下:

Python
config = QSettings(os.path.join(path, 'veracrypt.inf'), QSettings.IniFormat)  
date, version = config.value('Version/DriverVer')
这个demo可以读取以上提到的配置文件中的VeraCrypt的日期、版本号,后续进行一些处理,目前看着使用QSetting类还不错,也不是太复杂,还能转换数据类型,后期可以考虑以下使用使用

有的时候如果让configparser类读取字符串的数据,进行一些操作后想获取修改后的字符串,这个时候可以配合io模块来实现,参考代码如下:

Python
from configparser import RawConfigParser
import io
config=RawConfigParser()
config.read_string("""[new]
type = drive
token = {}

[test]
type = drive
""")
config.remove_section('new')
f=io.StringIO()
config.write(f)
print(f.getvalue())

Note

经过研究发现write()不止可以传入open()的文件句柄,也可以通过io模块将数据写入到内存中,然后再读取,这样确实挺方便的