Files
bci_algo/PubLibrary/InifileHelper.py
2026-06-06 09:16:49 +08:00

69 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*-coding:utf-8 -*-
import configparser
import os
import sys
from audioop import error
def get_config_paths():
"""返回所有可能的 config.ini 路径(按优先级排序)"""
paths = []
# 1. exe 同级目录(用户手动放置或外部修改)
exe_dir = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else None
if exe_dir:
paths.append(os.path.join(exe_dir, 'config.ini'))
# 2. PyInstaller 资源目录 (_MEIPASS打包时 datas 复制进来的)
meipass = getattr(sys, '_MEIPASS', None)
if meipass:
paths.append(os.path.join(meipass, 'config.ini'))
# 3. PubLibrary 目录下(优先查找)
pub_dir = os.path.dirname(os.path.abspath(__file__))
pub_path = os.path.join(pub_dir, 'config.ini')
if pub_path not in paths:
paths.append(pub_path)
# 4. 项目根目录下(开发环境备用)
project_root = os.path.dirname(pub_dir)
root_path = os.path.join(project_root, 'config.ini')
if root_path not in paths:
paths.append(root_path)
return paths
def IniWrite(section, keyname, value):
exe_dir = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else None
base_dir = exe_dir if exe_dir else os.path.dirname(os.path.abspath(__file__))
IniFileName = os.path.join(base_dir, 'config.ini')
config = configparser.ConfigParser()
try:
with open(IniFileName, 'r', encoding='utf-8') as f:
config.read_file(f)
except FileNotFoundError:
pass
with open(IniFileName, 'w', encoding='utf-8') as configfile:
if not config.has_section(section):
config.add_section(section)
config[section][keyname] = str(value)
config.write(configfile)
def IniRead(section, key, default=None):
fallback = default if default is not None else '5'
for path in get_config_paths():
if os.path.exists(path):
try:
config = configparser.ConfigParser()
with open(path, 'r', encoding='utf-8') as f:
config.read_file(f)
if config.has_section(section):
# print(f"[IniRead] 找到配置 [{section}] {key} -> {config[section][key]} (来源: {path})")
return config[section][key]
except Exception as e:
print(f"[IniRead] 读取失败 {path}: {e}")
return fallback