Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python修改INI文件_Python_Configparser - Fatal编程技术网

用Python修改INI文件

用Python修改INI文件,python,configparser,Python,Configparser,我有一个INI文件需要用Python修改。我正在查看ConfigParser模块,但仍然有问题。我的代码是这样的: config= ConfigParser.RawConfigParser() config.read('C:\itb\itb\Webcams\AMCap1\amcap.ini') config.set('Video','Path','C:\itb\itb') 但是在运行此代码后查看amcap.ini文件时,它保持不变。谁能告诉我我做错了什么 ConfigParser不会自动写回磁

我有一个INI文件需要用Python修改。我正在查看
ConfigParser
模块,但仍然有问题。我的代码是这样的:

config= ConfigParser.RawConfigParser()
config.read('C:\itb\itb\Webcams\AMCap1\amcap.ini')
config.set('Video','Path','C:\itb\itb')

但是在运行此代码后查看
amcap.ini
文件时,它保持不变。谁能告诉我我做错了什么

ConfigParser不会自动写回磁盘上的文件。为此,请使用;它以一个打开的文件对象作为参数

config= ConfigParser.RawConfigParser()
config.read(r'C:\itb\itb\Webcams\AMCap1\amcap.ini')
config.set('Video','Path',r'C:\itb\itb')
with open(r'C:\itb\itb\Webcams\AMCap1\amcap.ini', 'wb') as configfile:
    config.write(configfile)

您可以使用
python benedict
,它是一个dict子类,为大多数常见格式(包括
ini
)提供规范化的I/O支持

从benedict导入benedict
#路径可以是ini字符串、文件路径或远程url
path='path/to/config.ini'
d=本尼迪克特(路径)
#用你的口授做些事情
# ...
#将其写回磁盘
d、 至_ini(文件路径=路径)
它经过了良好的测试和记录,请查看自述文件以查看所有功能:

使用pip安装:
pip安装python benedict


注意:我是这个项目的作者

我尝试了
config.write('C:\itb\itb\Webcams\AMCap1\amcap.ini')
,但出现了错误。我必须先以写入或追加的方式打开文件吗?您需要一个open file对象,如我的示例所示;它不能与文件名(字符串)一起使用。@MartijnPieters如果我想为每个配置条目设置多个值(例如,本例中的多个路径),该怎么办?我可以把它们作为第三个参数放在一个列表中,但是配置有这个列表值。然后,当我通过ConfigParser()读取它们时,我得到一个包含列表的字符串。当然是可解析的,但并不理想@Pyderman:第三个值总是转换为字符串。如果您需要更复杂的格式,请发明自己的格式(例如,
,'.join(listobj)
写入时,
[item.strip()用于value中的项。拆分(',')]
读取时,如果您需要支持多个项)