84 lines
2.1 KiB
Python
84 lines
2.1 KiB
Python
|
|
"""
|
|||
|
|
2026/4/7
|
|||
|
|
TMY
|
|||
|
|
导入INI文件配置
|
|||
|
|
"""
|
|||
|
|
""" #2026/4/18停用,因为打包后不能扎到正确的config路径
|
|||
|
|
import configparser
|
|||
|
|
import os
|
|||
|
|
|
|||
|
|
class ConfigLoader:
|
|||
|
|
_instance = None
|
|||
|
|
|
|||
|
|
def __new__(cls):
|
|||
|
|
if cls._instance is None:
|
|||
|
|
cls._instance = super().__new__(cls)
|
|||
|
|
cls._instance.load()
|
|||
|
|
return cls._instance
|
|||
|
|
|
|||
|
|
def load(self):
|
|||
|
|
self.cf = configparser.ConfigParser()
|
|||
|
|
self.cf.read(os.path.join(os.path.dirname(__file__), "config.ini"), encoding="utf-8")
|
|||
|
|
|
|||
|
|
def get(self, section, key, default=""):
|
|||
|
|
try:
|
|||
|
|
return self.cf.get(section, key)
|
|||
|
|
except:
|
|||
|
|
return default
|
|||
|
|
|
|||
|
|
def get_int(self, section, key, default=0):
|
|||
|
|
try:
|
|||
|
|
return self.cf.getint(section, key)
|
|||
|
|
except:
|
|||
|
|
return default
|
|||
|
|
|
|||
|
|
# 全局单例(全项目共用这一个)
|
|||
|
|
cfg = ConfigLoader()
|
|||
|
|
"""
|
|||
|
|
"""
|
|||
|
|
2026/4/18
|
|||
|
|
TMY
|
|||
|
|
导入config.ini文件配置
|
|||
|
|
把读取配置文件的路径改成 exe 真实目录
|
|||
|
|
"""
|
|||
|
|
import configparser
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
|
|||
|
|
class ConfigLoader:
|
|||
|
|
_instance = None
|
|||
|
|
|
|||
|
|
def __new__(cls):
|
|||
|
|
if cls._instance is None:
|
|||
|
|
cls._instance = super().__new__(cls)
|
|||
|
|
cls._instance.load()
|
|||
|
|
return cls._instance
|
|||
|
|
|
|||
|
|
def get_exe_dir(self):
|
|||
|
|
# 获取 exe 所在真实目录(不管在哪运行都正确)
|
|||
|
|
if getattr(sys, 'frozen', False):
|
|||
|
|
# 打包后
|
|||
|
|
return os.path.dirname(sys.executable)
|
|||
|
|
else:
|
|||
|
|
# 开发环境
|
|||
|
|
return os.path.dirname(__file__)
|
|||
|
|
|
|||
|
|
def load(self):
|
|||
|
|
self.cf = configparser.ConfigParser()
|
|||
|
|
# 关键:从 exe 同级目录读取 config.ini
|
|||
|
|
config_path = os.path.join(self.get_exe_dir(), "config.ini")
|
|||
|
|
self.cf.read(config_path, encoding="utf-8")
|
|||
|
|
|
|||
|
|
def get(self, section, key, default=""):
|
|||
|
|
try:
|
|||
|
|
return self.cf.get(section, key)
|
|||
|
|
except:
|
|||
|
|
return default
|
|||
|
|
|
|||
|
|
def get_int(self, section, key, default=0):
|
|||
|
|
try:
|
|||
|
|
return self.cf.getint(section, key)
|
|||
|
|
except:
|
|||
|
|
return default
|
|||
|
|
|
|||
|
|
cfg = ConfigLoader()
|