forked from bosichong/PrimarySchoolMathematics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAPPconfig.py
203 lines (157 loc) · 6.63 KB
/
APPconfig.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
#!/usr/bin/env python3
# -*- coding=utf-8 -*-
# @Time : 2018-11-02
# @Author : J.sky
# @Mail : [email protected]
# @Site : www.17python.com
# @Title : 基于Python开发的小学生口算题生成器
# @Url : http://www.17python.com/blog/29
# @Details : Python实现小学生加减乘除速算考试题卷。
# @Other : OS X 10.11.6
# Python 3.6.1
# PyCharm
import os
from configparser import ConfigParser
__version__ = "0.0.1"
'''
开心Python Django 学习交流q群:217840699
Author : J.sky
Mail : [email protected]
'''
class AppConfig:
'''
APP配置文件,将一些程序配置数据保存的ini文件里。
'''
#ini程序所在目录,也是当前程序的根目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
#INI文件地址
INI_PATH = os.path.join(BASE_DIR, 'config.ini')
def __init__(self):
print(self.BASE_DIR)
print(self.INI_PATH)
print(os.path.isfile(self.INI_PATH))
self.c = ConfigParser()
self.readINI()
#若没有配置文件,则创建。
if(not os.path.isfile(self.INI_PATH)):
# print("ini文件不存在,开始创建!")
self.create_ini()
def create_ini(self):
'''
创建INI文件及默认数据
:return
'''
# 创建section及选项
self.c.add_section('config')
self.c.set('config','signum','1')#包含题型需要的 1+ 2- 3* 4/
self.c.set('config', 'step', '1') # 生成几步运算, 默认: 1 取值范围 1-3
self.c.set('config','is_result','0')#int 0求结果,1求运算项
self.c.set('config', 'is_bracket', '0') # int 是否需要括号 0不需要 1需要
self.c.set('config', 'multistep', '[[1,9],[1,9],[1,9],[1,9],[1,9]]') # 包括 四个运算项及结果数值范围设置。
self.c.set('config', 'symbols', '[[1, 0, 0, 0], [0, 2, 0, 0], [1, 0, 0, 0]]') # 包括 四个运算项及结果数值范围设置。
self.c.add_section('addattrs')
self.c.set('addattrs', 'carry', '1') #进位随机选择项单选,随机1,进位2,不进位3
self.c.add_section('subattrs')
self.c.set('subattrs', 'abdication', '1') # 退位随机选择项单选,随机1,退位2,不退位3
# self.c.set('multattrs', 'multattrs', '0') # 暂时无配置项
self.c.set('divattrs', 'divresultrange', '0') # 暂时无配置项
self.c.set('config', 'number', '30') # 需要生成的题数
self.c.set('config', 'juanzishu', '5') # 需要打印的卷子数
self.c.set('config', 'lieshu', '3') # 需要打印的卷子题列数
self.c.set('config', 'jz_title', '小学生口算题') # 需要打印的卷子题列数
self.c.set('config', 'inf_title', '姓名:__________ 日期:____月____日 时间:________ 对题:____道') # 需要打印的卷子题列数
self.saveINI()#创建INI文件
def readINI(self):
""" ini文件读取,返回一个INI配置对象
或是用来更新内存中的配置文件数据
"""
self.c.read(self.INI_PATH, encoding='utf-8')
def saveINI(self):
'''保存或是更新ini文件'''
with open(self.INI_PATH, mode='w', encoding='utf-8') as ini:
self.c.write(ini)
def loadINI(self):
'''读取并返回配置数据'''
self.readINI()#更新内存中配置文件的数据
add = {"carry": int(self.c.get('addattrs','carry')), }
sub = {"abdication": int(self.c.get('subattrs','abdication')), }
mult = {} # 乘法设置
# 除法设置
div = {"divresultrange": int(self.c.get('divattrs','divresultrange')), }
signum = int(self.c.get('config','signum'))
step = int(self.c.get('config', 'step'))
number = int(self.c.get('config', 'number'))
is_result = int(self.c.get('config', 'is_result'))
is_bracket = int(self.c.get('config', 'is_bracket'))
multistep = eval(self.c.get('config','multistep'))
tmpsym = eval(self.c.get('config','symbols'))
symbols = [[],[],[]]
kk = 0
for x in tmpsym:
for y in x :
if y > 0:
symbols[kk].append(y)
kk+=1
tmp_type = [add, sub, mult, div, signum, step, number, is_result, is_bracket, multistep, symbols]
# print(tmp_type)
return tmp_type #返回一个list 包含程序配置数据。
def saveMultistep(self,multistep):
'''保存算数项设置数据'''
self.c.set('config','multistep',multistep)
self.saveINI()
def saveSymbols(self,symbols):
'''保存运算符号设置数据'''
self.c.set('config','symbols',symbols)
self.saveINI()
def saveInf_title(self,inf_title):
'''保存卷子副标题设置数据'''
self.c.set('config','inf_title',inf_title)
self.saveINI()
def saveJz_title(self,jz_title):
'''保存卷子标题设置数据'''
self.c.set('config','jz_title',jz_title)
self.saveINI()
def saveLieshu(self,lieshu):
'''保存卷子题列数设置数据'''
self.c.set('config','lieshu',lieshu)
self.saveINI()
def saveJuanzishu(self,juanzishu):
'''保存卷子份数设置数据'''
self.c.set('config','juanzishu',juanzishu)
self.saveINI()
def saveAdd(self,add):
'''保存加法设置数据'''
self.c.set('addattrs','carry',add)
self.saveINI()
def saveSub(self,sub):
'''保存减法设置数据'''
self.c.set('subattrs','abdication',sub)
self.saveINI()
def saveDiv(self,div):
'''保存除法设置数据'''
self.c.set('divattrs','divresultrange',div)
self.saveINI()
def saveSignum(self,signum):
'''保存题型设置数据'''
self.c.set('config','signum',signum)
self.saveINI()
def saveStep(self,step):
'''保存口算题步数设置数据'''
self.c.set('config','step',step)
self.saveINI()
def saveNumber(self,number):
'''保存口算题个数设置数据'''
self.c.set('config','number',number)
self.saveINI()
def saveIs_Result(self,is_result):
'''保存口算题是否求结果设置设置数据'''
self.c.set('config','is_result',is_result)
self.saveINI()
def saveIs_Bracket(self,is_bracket):
'''保存口算题是否使用括号设置设置数据'''
self.c.set('config','is_bracket',is_bracket)
self.saveINI()
if __name__ == '__main__':
ac = AppConfig()
ac.saveSignum('5')
ac.loadINI()