作者:Lala88童鞋_619 | 来源:互联网 | 2024-12-28 08:39
目录
- 1. 常见配置文件类型
- 2. 使用Python3读写INI配置文件
- 3. Python文件读写基础
- 4. 使用Python读取配置文件
常见配置文件类型
在软件开发中,配置文件用于存储应用程序的设置和参数。常见的配置文件后缀包括.ini、.conf、.json、.toml和.yaml。推荐使用.ini和.yaml格式,因为它们易于阅读和维护。
.ini文件常用于Windows操作系统和其他平台。可以使用Python内置的configparser库进行读写操作。.json文件适合结构化数据,使用Python内置的json库解析。.toml文件支持丰富的数据类型,使用外部库toml解析。.yaml文件是目前最推荐的配置文件格式,支持注释和多种数据类型,使用pyyaml库解析。
使用Python3读写INI配置文件
Python内置的configparser模块可以方便地处理INI配置文件。首先导入configparser模块:
import configparser
接下来,创建一个ConfigParser对象并加载配置文件:
cp = configparser.ConfigParser()
cp.read('config.ini')
要获取某个section中的键值对,可以使用get方法:
value = cp.get('section', 'key')
如果需要更新或添加配置项,可以使用set方法,并将更改写回文件:
cp.set('section', 'new_key', 'new_value')
with open('config.ini', 'w') as configfile:
cp.write(configfile)
Python文件读写基础
文件读写是编程中的基本操作。Python提供了多种方式来处理文件。以下是基本步骤:
- 打开文件
- 读取或写入数据
- 关闭文件
例如,以写模式打开文件并写入数据:
with open('example.txt', 'w') as f:
f.write('Hello, World!')
以读模式打开文件并逐行读取内容:
with open('example.txt', 'r') as f:
for line in f:
print(line.strip())
此外,还可以使用不同的文件模式,如追加模式('a')和二进制模式('b')。
使用Python读取配置文件
读取配置文件的具体方法取决于文件格式。对于INI文件,可以使用configparser模块。以下是一个完整的示例程序,它生成一个IpConfig.ini配置文件,再读取其中的数据并输出到屏幕上:
# -*- coding: utf-8 -*-
import configparser
cOnfig= configparser.ConfigParser()
# 写入配置文件
try:
config.add_section('School')
config.set('School', 'IP', '10.15.40.123')
config.set('School', 'Mask', '255.255.255.0')
config.set('School', 'Gateway', '10.15.40.1')
config.set('School', 'DNS', '211.82.96.1')
except configparser.DuplicateSectionError:
print("Section 'School' already exists")
try:
config.add_section('Match')
config.set('Match', 'IP', '172.17.29.120')
config.set('Match', 'Mask', '255.255.255.0')
config.set('Match', 'Gateway', '172.17.29.1')
config.set('Match', 'DNS', '0.0.0.0')
except configparser.DuplicateSectionError:
print("Section 'Match' already exists")
with open('IpConfig.ini', 'w') as configfile:
config.write(configfile)
# 读取配置文件
ip = config.get('School', 'IP')
mask = config.get('School', 'Mask')
gateway = config.get('School', 'Gateway')
dns = config.get('School', 'DNS')
print(ip, mask, gateway, dns)