从文件存取字典,涉及到几个内置函数,对格式的控制
来源:互联网 发布:巴洛克的艺术风格 知乎 编辑:程序博客网 时间:2024/06/05 15:07
dbfilename = 'people-file'ENDDB = 'enddb.' #定义结尾符ENDREC = 'endrec.'#定义间隔符RECSEP = '=>' #定义对应符db = {'zhang':{'age':19,'job':'student','wage':5000}, 'zhu':{'age':20,'job':'engineer','wage':6000}, 'liu':{'age':29,'job':'sailsman','wage':10000}}def (db,dafilename = dbfilename): dbfile = open(dbfilename,'w') #创建文件对象 for key in db: print(key,file=dbfile) for (name,value) in db[key].items():#将字典里每一对元素提取出来 print(name+RECSEP+repr(value),file=dbfile)#打印出来,输出到文件里 print(ENDREC,file=dbfile) print(ENDDB,file=dbfile) dbfile.close()def (dbfilename = dbfilename): dbfile = open(dbfilename) import sys sys.stdin = dbfile #重定向输入流,从文件读取 db = {} key = input() #输入大键值 while key != ENDDB: rec = {} field = input() while field != ENDREC: name,value = field.split(RECSEP)#输入小键值加值 rec[name] = eval(value) #将值以正确的格式赋给键值 field = input() db[key] = rec key = input() return db #返回数据对象if __name__ == '__main__':#以脚本运行时执行以下函数 storeDbase(db) showdb = loadDbase() print(showdb) 结果:C:\Python34\python.exe D:/pycharm/one.py{'zhang': {'job': 'student', 'age': 19, 'wage': 5000}, 'liu': {'job': 'sailsman', 'age': 29, 'wage': 10000}, 'zhu': {'job': 'engineer', 'age': 20, 'wage': 6000}}Process finished with exit code 0几个重点:关于内置函数print(),默认参数如下:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)需要输出的对象,间隔符,结尾符,输出流文件,是否作缓存本例中需要将字典以特定的分隔符/结尾符输出到文件里repr()与str的比较:参考该博客:http://blog.csdn.net/u013961718/article/details/51100464总之,即str是显示给人看的,repr()给python看的例:for (name,value) in a.items(): print(name+"=>"+repr(value))job=>'sailsman' #在python看来他是字符串,因此输出也以该形式输出wage=>10000age=>29for (name,value) in a.items(): print(name+"=>"+str(value))job=>sailsman #输出给用户看,用户只需要关心job是什么,并不用关心他是否是字符串wage=>10000age=>29本例中需要如实输出文件里的内容,因此用repr()。另外不可以直接print(name+"=>"+value),因为value可能是int型数据items()函数将字典里的元素分成每一对:>>>a.items()dict_items([('job', 'sailsman'), ('wage', 10000), ('age', 29)])eval()这里的作用也是起到了格式化的作用,以字符串的形式读进来是这样的:"job=>'student'""wage=>5000"如果直接 rec[name] = value,那么输出就是:'job': "'student'", 'wage': '5000'而加了之后就是:'job': 'student', 'wage': 5000--参考《Python 编程》
阅读全文
0 0
- 从文件存取字典,涉及到几个内置函数,对格式的控制
- 对存取控制的认识
- php对字符串加密解密常用的几个内置函数
- ABPA 对文件的存取
- 对文件的操作的几个函数
- oracle从控制文件中获取信息的数据字典
- Python中内置的字典函数
- python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块
- Python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块
- 【python】python的几个内置函数
- perl几个特殊的内置函数
- python中几个内置函数的用法
- python 几个内置函数的用法
- 多线程控制的几个函数
- mysql几个内置函数
- VB.NET存取注册表项的几个函数
- 数据操作中涉及到统计的部分主要借助数据库内置函数完成
- 存储过程源码涉及到的数据字典
- Python+Selenium注册登录各个功能流程验证脚本
- HTTP method POST is not supported by this URL错误的解决方案
- 配置单臂路由器
- J
- linux下PPTP Server测试环境搭建
- 从文件存取字典,涉及到几个内置函数,对格式的控制
- android studio:ButterKnife无法绑定控件
- Android从Web页面启动App
- Android6.0动态申请权限的两种办法
- POJ2236 解题报告
- Android 开发 Tip 17 -- 为什么getBackground().setAlpha(); 会影响别的控件?
- GitHub 入门教程
- 学习嵌入式,从零开始(硬件篇)
- android studio中如何生成jar包