情况描述:基于Flask的python项目读取配置文件模块,在window下正常运行,但部署到linux服务器上就报异常configparser.NoSectionError: No section
import configparser,os
config = configparser.ConfigParser()
def register_init_config():
# -read读取ini文件
pro_path = os.path.split(os.path.realpath(__file__))[0]
config.read(pro_path + '\\config.ini', encoding='utf-8')
config.read(pro_path + '\\error_code.ini', encoding='utf-8')
# 数据库配置
setting.db_const = {
'db_name': config['db']['db_name'],
'db_user': config['db']['db_user'],
'db_pass': config['db']['db_pass'],
'db_host': config['db']['db_host'],
'db_port': config['db']['db_port']
}
第一反应是考虑适应因为不同系统的编码格式不一致所致,网上搜的答案大部分都是配置文件被window添加额外字符,或者改成txt格式,text格式等
为了验证编码问题,直接在linux环境下,vi一个新的配置文件,复制粘贴纯字符,结果还是报错误
configparser.NoSectionError: No section:'db'
google一轮之后发现,问题根源是window和linux的文件系统,斜杠是相反的,把斜杠反过来就正常运行了
import configparser,os
config = configparser.ConfigParser()
def register_init_config():
# -read读取ini文件
pro_path = os.path.split(os.path.realpath(__file__))[0]
config.read(pro_path + '/config.ini', encoding='utf-8')
config.read(pro_path + '/error_code.ini', encoding='utf-8')
# 数据库配置
setting.db_const = {
'db_name': config['db']['db_name'],
'db_user': config['db']['db_user'],
'db_pass': config['db']['db_pass'],
'db_host': config['db']['db_host'],
'db_port': config['db']['db_port']
}
在此感谢该博文的启发
博文地址:https://blog.csdn.net/qq_31489933/article/details/88327055