我的应用程序有一个BIG JSON文件(如下所示),它有各种变量,值为字符串和整数。我想读取此文件并存储在不同的类变量中以进行进一步处理。这些类变量应根据功能而改变。我想知道进一步优化下面代码的任何想法。在下面的代码中,我明确地复制数据而没有任何列表推导或任何最佳技术。任何避免复制数据的想法 config.ID = str(self.data [" id"]),config.ACTIVE = int(self.data [" isActive"] )并做一个有效的方法(如果我有1000个变量,需要写1000行。
read_con.py
-----------
import json
class config:
ID=None
ACTIVE=None
AGE=None
NAME=None
GEN=None
COM=None
EMAIL=None
def __init__(self):
self.data = {}
def read_config_data(self, cfile):
try:
with open(cfile, 'r') as cd:
self.data = json.load(cd)
except Exception:
print("Error in Read file")
self.data = {}
else:
# HOW TO AVOID COPY OF DATA AS BELOW.
config.ID =str(self.data["id"])
config.ACTIVE=int(self.data["isActive"])
config.AGE=int(self.data["age"])
config.NAME=str(self.data["name"])
config.GEN=str(self.data["gender"])
config.COM=str(self.data["company"])
config.EMAIL=str(self.data["email"])
def use_variables_modify_based_on_request(self):
config.AGE=45
config.ACTIVE=8
config.EMAIL="x@gmail.com"
def printvalues(self):
print config.ID, config.ACTIVE, config.AGE, config.NAME, config.EMAIL
if __name__ == "__main__":
obj = config()
obj.read_config_data("sample.json")
obj.printvalues()
# Modifying the values of class variables in different functions.
obj.use_variables_modify_based_on_request()
obj.printvalues()
sample.json file
-----------------
{
"id": "59761c233d8d0",
"isActive": 1,
"age": 24,
"name": "Kirsten Sellers",
"gender": "female",
"company": "EMERGENT",
"email": "kirstensellers@emergent.com"
}
答案 0 :(得分:1)
而不是:
...
else:
# HOW TO AVOID COPY OF DATA AS BELOW.
config.ID =str(self.data["id"])
config.ACTIVE=int(self.data["isActive"])
config.AGE=int(self.data["age"])
config.NAME=str(self.data["name"])
config.GEN=str(self.data["gender"])
config.COM=str(self.data["company"])
config.EMAIL=str(self.data["email"])
...
这样做:
...
else:
for key, value in self.data.items():
setattr(config, key.upper(), value)
...
(不需要str
和int
调用,因为值已经是合适的类型了)