编程语言
首页 > 编程语言> > python-文件转字典,字典转文件

python-文件转字典,字典转文件

作者:互联网

学习随笔:

文件转字典,字典转文件

思路:

文件转字典:

1.打开文件,创建一个空字典

2.读取文件    ==按照需求读取文件,如以行读取文件,每次读取一行

3.获取读取的有效数据   ==做个标记,以标记分割读取的字符串,返回一个列表

4.将获取的有效数据列表按照需求一一添加到字典中,同时记录添加的顺序

5.文件读取完成后关闭文件

字典转文件:

1.打开文件

2.将字典中的数据按照之前添加的顺去取出来

3.在将取出来的数据格式化的写入文件中

4.将字典中的全部内容写入文件后 关闭文件

具体代码:

fr = open('ATconmand.txt', 'r')
'''假设ATconmand.txt文件内容如下
AT:300:OK:OK
ATI:300:OK:QUECTEL
AT+EGMR:300:OK:EC20
'''

dic={}  #字典用来储存文件内容的
keys = []  # 用来存储读取的顺序
lines=0
for line in fr:
    lines+=1
    v = line.strip().split(':')   #已行读取文件内容,每行已“:”分割文件内容生成列表 例如:('AT','300','OK','OK')
    dic["AT_COMMAND_%s" %(lines)] =(v[0],{'waittime':(v[1],{'Result':(v[2],v[3])})})   #生成字典,例如:{'AT_COMMAND_1': ('AT', {'waittime': ('300', {'Result': ('OK', 'OK')})})}
    keys.append(lines)  #读取顺序 [1, 2, 3]
fr.close()
print(dic)
# 写入文件代码 通过keys的顺序写入
fw = open('wdic.txt', 'w+')  #打开要写入的文件,若不存在改文件则自动创建该文件
print(keys)   #读取顺序 [1, 2, 3]
for k in keys:
    AT=dic["AT_COMMAND_%s" %(k)][0]  #获取dic{'AT_COMMAND_1':('AT',{})} 字典中的"AT"
    waittime=dic["AT_COMMAND_%s" %(k)][1]['waittime'][0]  #获取dic{'AT_COMMAND_1':('AT',{'waittime': ('300',{})})} 字典中的"300"
    Result=dic["AT_COMMAND_%s" %(k)][1]['waittime'][1]['Result'][0] #获取dic{'AT_COMMAND_1': ('AT', {'waittime': ('300', {'Result': ('OK', 'OK')})})} 字典中的第一个'OK'
    Result1 = dic["AT_COMMAND_%s" % (k)][1]['waittime'][1]['Result'][1]#获取dic{'AT_COMMAND_1': ('AT', {'waittime': ('300', {'Result': ('OK', 'OK')})})} 字典中的第二个'OK'
    fw.write('''{AT}:{waittime}:{Result}:{Result1}\n'''.format(AT=AT,waittime=waittime,Result=Result,Result1=Result1))  ##数据写入文件
    fw.flush() #刷新文件
    print('''{AT}:{waittime}:{Result}:{Result1}\n'''.format(AT=AT,waittime=waittime,Result=Result,Result1=Result1))

fw.close()  #关闭文件
'''生成的wdic.txt文件的内容如下
AT:300:OK:OK
ATI:300:OK:QUECTEL
AT+EGMR:300:OK:EC20
'''
View Code

 

标签:文件,OK,python,waittime,300,Result,字典
来源: https://www.cnblogs.com/lorenjia/p/11067164.html