定义FileAction类,最少定义两个方法,read data,write data
调用write data可将字典数据,以以下格式写入Data.txt文件
字典数据:{‘001’: {‘name’: ‘张三’, ‘age’: 18, ‘num’: ‘001’}, ‘002’: {‘name’: ‘张二’, ‘age’: 28, ‘num’: ‘002’}}
文件内数据:
name:张三,age:18,num:001
name:张二,age:28,num:002
调用dataread 方法可将Data.txt文件内的数据重新转换为字典类型的数据并返回
dic={ '001':{'name':'张三','age': 18 ,'num':'001'},
'002':{'name':'张二','age': 28 ,'num':'002'}}
class FileAction():
@staticmethod
def writeDate(dic):
f=open("Data.txt",'w')
for k,v in dic.items():#解析出第一层字典,例如'001':{'name':'张三','age': 18 ,'num':'001'}
for k1,v1 in v.items():#解析出第二层字典:name,张三 age,18 num,001
f.write( (k1+":"+str(v1)))
if k1=='num':
f.write('\n')
else:
f.write(',')
f.close()
@staticmethod
def readData( ):
f=open('Data.txt','r')
line=f.readline()
dzd={}#定义一个大字典
while len(line)>0:
items=line.strip().split(',')#读每一句话,删除空格和\n,并用都好隔开每项,例如name:张三,age:18,num:001
zd={}#每行定义第二层字典
for item in items:
s=item.split(':')#把每项例如name:张三,切成键值对,name 张三
if s[0]=='age':#如果是年龄,转换成整形
zd[s[0]]=int(s[1])
else:
zd[s[0]]=s[1]
if s[0]=='num':#如果是num,让其值成为第一层的键
dzd[s[1]]=zd
line=f.readline()
print(dzd)
f.close()
FileAction.readData( )