1. import os
  2.  
  3. def file_handler(backend_data,res=None,type='fetch'): # 查询功能
  4. if type == 'fetch':
  5. with open('test_new.txt','r') as read_f:
  6. ret = []
  7. tag = False
  8. for read_line in read_f:
  9. if read_line.strip() == backend_data:
  10. tag = True
  11. continue
  12.  
  13. if tag and read_line.startswith('backend'):
  14. break
  15.  
  16. if tag:
  17. print(read_line,end='')
  18. ret.append(read_line)
  19. return ret
  20. if type == 'change': # 修改功能
  21. with open('test_new.txt', 'r') as read_f, \
  22. open('test_new.txt_new', 'w') as write_f:
  23. tag = False
  24. has_write = False
  25. for read_line in read_f:
  26. if read_line.strip() == backend_data:
  27. tag = True
  28. continue
  29. if tag and read_line.startswith('backend'):
  30. tag = False
  31. if not tag:
  32. write_f.write(read_line)
  33. else:
  34. if not has_write:
  35. for record in res:
  36. write_f.write(record)
  37. has_write = True
  38.  
  39. os.rename('test_new.txt', 'test_new.txt.bak')
  40. os.rename('test_new.txt_new', 'test_new.txt')
  41. os.remove('test_new.txt.bak')
  42.  
  43. def fetch(data):
  44. print('您输入的信息是:',data)
  45. backend_data= 'backend %s' % data
  46. return file_handler(backend_data)
  47.  
  48. def change(data):
  49. print('开始修改功能')
  50. print('用户输入的信息是:',data)
  51. backend=data[0]['backend']
  52. backend_data='backend %s' %backend
  53. old_server_record ='%s server %s %s\n'%(*9,data[0]['record']['server'])
  54. new_server_record = '%s server %s %s\n' % (*9, data[1]['record']['server'])
  55. print('您想要修改的记录:',old_server_record)
  56. res=fetch(backend)
  57. print(res)
  58. if not res or old_server_record not in res:
  59. return '您要修改的信息不存在'
  60. else:
  61. index = res.index(old_server_record)
  62. res[index]=new_server_record
  63.  
  64. res.insert(0,'%s\n' %backend_data)
  65. file_handler(backend_data,res=res,type='change')
  66.  
  67. if __name__== '__main__':
  68. msg='''
  69. 1:查询
  70. 2:修改
  71. 5:退出
  72. '''
  73. msg_dic={
  74. '':fetch,
  75. '':change
  76. }
  77. while True:
  78. print(msg)
  79. choose = input('请输入您要的选项:').strip()
  80. if not choose: continue
  81. if choose == '':break
  82.  
  83. data = input('请输入您的信息:').strip()
  84. if choose != '':
  85. data = eval(data)
  86.  
  87. res = msg_dic[choose](data) # 查询到的结果放到一个列表里输出
  88. print('最终的结果:',res)

python学习-44 程序的解耦 (不是特别懂的,回头在复习)的更多相关文章

  1. Python学习-购物车程序

    程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...

  2. Python学习--课本程序练习(周更)

    1.绘制正方形螺旋线 import turtle turtle.setup(600,300,200,200) turtle.pensize(1) turtle.color('green') i=0 w ...

  3. 【Python学习】程序运行完发送邮件提醒

    有时候我们运行一个需要跑很长时间的程序,不管是在云主机还是本地主机上运行,我们都不可能一直守在电脑面前等.所以想到使用邮件来通知提醒. 示例代码如下 # -*- coding: utf-8 -*- # ...

  4. Python学习——购物车程序

    问题需求: 1.启动程序,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时退出,退出时,打印已购买的商品和余 ...

  5. Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘

    Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...

  6. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  7. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  8. 20180821 Python学习笔记:如何获取当前程序路径

    20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...

  9. 【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

随机推荐

  1. [bzoj 3566][SHOI 2014]概率充电器

    传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以 ...

  2. java把一段时间分成周,月,季度,年的时间段

    package com.mq.test.activeMQ; import java.text.DateFormat; import java.text.ParseException; import j ...

  3. BitmapFactory: inSampleSize 的一些思考

    一. BitmapFactory.Options 中inSampleSize的取值问题 关于inSampleSize的取值问题Google已经给出了一个推荐的算法:(https://developer ...

  4. 常用学习&面试资源网站

    https://github.com/MZCretin/RollToolsApi  开源通用API https://github.com/SenhLinsh/Android-Hot-Libraries ...

  5. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_07-Feign远程调用-Feign测试

    2.2.1 Feign介绍 Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端.Spring Cloud引入 Feign并且集成了Ribbon实 ...

  6. Mysql迁移由于字符集导致乱码的数据

    有时候会在不注意的情况下创建了字符集为latin1的数据库,导致后续插入的中文显示乱码.这时有两种方法:1.修改数据库与数据表的字符集(只能向上调整,不能向下调整):2.数据迁移.但是两种方法都需要做 ...

  7. 我的iOS动画01

    1.嵌套使用,先变大再消失 [UIView animateWithDuration:1.25 aniamtions:^{ CGAffineTransform newTRansform = CGAffi ...

  8. python 中 logging 模块的 log 函数以及坑

    记录下吧,一个日志的函数,但有个坑是在调用函数时需要先将函数实例化为一个变量,否则进入某个循环时会多次刷新日志: """ 日志模块 """ ...

  9. Python命令行参数解析模块getopt使用实例

    Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...

  10. 怎么用Ubuntu系统制作Ubuntu系统盘

    ubuntu 16 下载地址: http://releases.ubuntu.com/16.04/?_ga=2.211639766.273896083.1564759714-49163328.1564 ...