python学习-44 程序的解耦 (不是特别懂的,回头在复习)
- import os
- def file_handler(backend_data,res=None,type='fetch'): # 查询功能
- if type == 'fetch':
- with open('test_new.txt','r') as read_f:
- ret = []
- tag = False
- for read_line in read_f:
- if read_line.strip() == backend_data:
- tag = True
- continue
- if tag and read_line.startswith('backend'):
- break
- if tag:
- print(read_line,end='')
- ret.append(read_line)
- return ret
- if type == 'change': # 修改功能
- with open('test_new.txt', 'r') as read_f, \
- open('test_new.txt_new', 'w') as write_f:
- tag = False
- has_write = False
- for read_line in read_f:
- if read_line.strip() == backend_data:
- tag = True
- continue
- if tag and read_line.startswith('backend'):
- tag = False
- if not tag:
- write_f.write(read_line)
- else:
- if not has_write:
- for record in res:
- write_f.write(record)
- has_write = True
- os.rename('test_new.txt', 'test_new.txt.bak')
- os.rename('test_new.txt_new', 'test_new.txt')
- os.remove('test_new.txt.bak')
- def fetch(data):
- print('您输入的信息是:',data)
- backend_data= 'backend %s' % data
- return file_handler(backend_data)
- def change(data):
- print('开始修改功能')
- print('用户输入的信息是:',data)
- backend=data[0]['backend']
- backend_data='backend %s' %backend
- old_server_record ='%s server %s %s\n'%(*9,data[0]['record']['server'])
- new_server_record = '%s server %s %s\n' % (*9, data[1]['record']['server'])
- print('您想要修改的记录:',old_server_record)
- res=fetch(backend)
- print(res)
- if not res or old_server_record not in res:
- return '您要修改的信息不存在'
- else:
- index = res.index(old_server_record)
- res[index]=new_server_record
- res.insert(0,'%s\n' %backend_data)
- file_handler(backend_data,res=res,type='change')
- if __name__== '__main__':
- msg='''
- 1:查询
- 2:修改
- 5:退出
- '''
- msg_dic={
- '':fetch,
- '':change
- }
- while True:
- print(msg)
- choose = input('请输入您要的选项:').strip()
- if not choose: continue
- if choose == '':break
- data = input('请输入您的信息:').strip()
- if choose != '':
- data = eval(data)
- res = msg_dic[choose](data) # 查询到的结果放到一个列表里输出
- print('最终的结果:',res)
python学习-44 程序的解耦 (不是特别懂的,回头在复习)的更多相关文章
- Python学习-购物车程序
程序:购物车程序 需求: 启动程序后,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额 ...
- Python学习--课本程序练习(周更)
1.绘制正方形螺旋线 import turtle turtle.setup(600,300,200,200) turtle.pensize(1) turtle.color('green') i=0 w ...
- 【Python学习】程序运行完发送邮件提醒
有时候我们运行一个需要跑很长时间的程序,不管是在云主机还是本地主机上运行,我们都不可能一直守在电脑面前等.所以想到使用邮件来通知提醒. 示例代码如下 # -*- coding: utf-8 -*- # ...
- Python学习——购物车程序
问题需求: 1.启动程序,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4.可随时退出,退出时,打印已购买的商品和余 ...
- Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘
Python学习手册(第4版) - 专业程序员的养成完整版PDF免费下载_百度云盘 提取码:g7v1 作者简介 作为全球Python培训界的领军人物,<Python学习手册:第4版>作者M ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
[Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...
- 20180821 Python学习笔记:如何获取当前程序路径
20180821 Python学习笔记:如何获取当前程序路径 启动的脚本的路径为:D:\WORK\gitbase\ShenzhenHouseInfoCrawler\main.py 当前脚本的路径为:D ...
- 【Python】Java程序员学习Python(三)— 基础入门
一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...
随机推荐
- [bzoj 3566][SHOI 2014]概率充电器
传送门 Description SHOI 概率充电器由 n-1 条导线连通了 n 个充电元件.进行充电时,每条导线是否可以导电以概率决定,每一个充电元件自身是否直接进行充电也由概率决定. 随后电能可以 ...
- java把一段时间分成周,月,季度,年的时间段
package com.mq.test.activeMQ; import java.text.DateFormat; import java.text.ParseException; import j ...
- BitmapFactory: inSampleSize 的一些思考
一. BitmapFactory.Options 中inSampleSize的取值问题 关于inSampleSize的取值问题Google已经给出了一个推荐的算法:(https://developer ...
- 常用学习&面试资源网站
https://github.com/MZCretin/RollToolsApi 开源通用API https://github.com/SenhLinsh/Android-Hot-Libraries ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_07-Feign远程调用-Feign测试
2.2.1 Feign介绍 Feign是Netflix公司开源的轻量级rest客户端,使用Feign可以非常方便的实现Http 客户端.Spring Cloud引入 Feign并且集成了Ribbon实 ...
- Mysql迁移由于字符集导致乱码的数据
有时候会在不注意的情况下创建了字符集为latin1的数据库,导致后续插入的中文显示乱码.这时有两种方法:1.修改数据库与数据表的字符集(只能向上调整,不能向下调整):2.数据迁移.但是两种方法都需要做 ...
- 我的iOS动画01
1.嵌套使用,先变大再消失 [UIView animateWithDuration:1.25 aniamtions:^{ CGAffineTransform newTRansform = CGAffi ...
- python 中 logging 模块的 log 函数以及坑
记录下吧,一个日志的函数,但有个坑是在调用函数时需要先将函数实例化为一个变量,否则进入某个循环时会多次刷新日志: """ 日志模块 """ ...
- Python命令行参数解析模块getopt使用实例
Python命令行参数解析模块getopt使用实例 这篇文章主要介绍了Python命令行参数解析模块getopt使用实例,本文讲解了使用语法格式.短选项参数实例.长选项参数实例等内容,需要的朋友可以参 ...
- 怎么用Ubuntu系统制作Ubuntu系统盘
ubuntu 16 下载地址: http://releases.ubuntu.com/16.04/?_ga=2.211639766.273896083.1564759714-49163328.1564 ...