文档章节

Python读取yaml生成菜单

Firxiao
 Firxiao
发布于 01/15 00:31
字数 397
阅读 168
收藏 5

需求:

每个location有对应的env, 每个env有对应的info

location1: dev:bar qa:foo uat:xxx
location2: dev:xxx qa:xxx

需要生成菜单,可以选择任意location中的env

Please choose location:
1: location1
2: location2
Enter your choice [1-2] : 1
1: dev
2: qa
3: uat
Enter your choice [1-3] : 2
You chosen location1 qa foo

思路及实现:

将配置信息存入配置文件中,在此选用yaml 利用python字典及列表的操作获取相应的值。

config.yml

location1:
  - env: dev
    info: bar
  - env: qa
    info: foo
  - env: uat
    info: xxx
location2:
  - env: dev
    info: xxx
  - env: qa
    info: xxx

menu.py

# -*- coding: utf-8 -*-
#author: firxiao
#date:20180115
#generate a menu from yaml config file.

import yaml
#读取配置文件 cfg为字典
with open("config.yml", 'r') as ymlfile:
    cfg = yaml.load(ymlfile)

print("Please choose location:")
#打印带序号排序过的字典
for i,location in enumerate(sorted(cfg)):
    print('%d: %s'% (i + 1,location))
#获取字典长度供菜单使用
lr = len(cfg)
choice = int(input('Enter your choice [1-%d] : ' % (lr)))

while True:
    if not choice: break
    # 将选项变为列表并根据输入序号选取
    location = list(sorted(cfg))[choice - 1]
    # 打印字典中key的value
    for i,d in enumerate(cfg[location]):
        print('%d: %s'% (i+1,d['env']))
    le = len(cfg[location])
    choice = int(input('Enter your choice [1-%d] : ' % (le)))
    # 同理,将选项转换为列表并取出相应的value
    print('You chosen %s %s %s'% (location,list(cfg[location])[choice - 1]['env'],list(cfg[location])[choice - 1]['info']))
    env = list(cfg[location])[choice - 1]['env']
    info = list(cfg[location])[choice - 1]['info']
    break

© 著作权归作者所有

共有 人打赏支持
Firxiao
粉丝 21
博文 99
码字总数 36492
作品 0
浦东
运维
私信 提问
用python变量作为配置文件格式的利与弊

用Python变量作为配置文件格式的利与弊 配置文件的格式非常多,有ini、xml、yaml等等,各有优点,适合不同的场景。然而,由于Python语言的解释性和动态性,给Python程序员带来了另一个选择:...

janzhen
2012/10/31
0
0
【自动化测试框架】 | 基于 selenium+Python,怎样从零开始搭建一个属于自己项目的测试框架

本框架是别人项目正在使用的框架,我这边抓取后经过了一点优化后整理出来的,大致包括,自动化用例套件、数据分离、日志模板、配置分离、断言、接口自动化、持续集成、自动化报告等方面,已经...

西边人
06/15
0
0
python开源工具列表【持续更新】

以下是个人在工作中整理的一些python wheel,供参考。 这个列表包含与网页抓取和数据处理的Python库 网络 通用urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于pycurl)。...

武耀文
04/25
0
0
Python 爬虫的工具列表 附Github代码下载链接

这个列表包含与网页抓取和数据处理的Python库 1、网络 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于pycurl)。 pycurl – 网络库(绑定libcurl)。 urllib3 – ...

大数据之路
2012/07/07
0
0
01 python基础——python解析yaml类型文件

目录 一、yaml介绍 二、yaml文件格式 三、yaml文件读取 四、 使用案例 一、yaml介绍 yaml全称Yet Another Markup Language(另一种标记语言)。采用yaml作为配置文件,文件看起来直观、简洁、...

pangbianlaogu
05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

搬瓦工DC3机房和DC8机房哪个速度快,应该选哪个?

搬瓦工DC3机房和DC8机房都是搬瓦工CN2,那么这两个机房比较哪个机房速度快?搬瓦工DC3机房和DC8机房应该选择哪个机房?移动用户用DC8机房还是DC3机房?联通用DC3还是DC8快?电信应该选DC3还是...

Alanbrooke
7分钟前
1
0
探秘Runtime - Runtime介绍

该文章属于<简书 — 刘小壮>原创,转载请注明: <简书 — 刘小壮> https://www.jianshu.com/p/ce97c66027cd Runtime是iOS系统中重要的组成部分,面试也是必问的问题,所以Runtime是一个iOS工...

刘小壮
9分钟前
1
0
图形用户界面和交互输入方法---小结

中国龙-扬科
25分钟前
1
0
当程序员有了中年危机 你会发现你就是个屁

前言 程序员是一个怎样的存在?引用一句鸡汤的名言来说:你以为你用双手改变了世界,实际上是苍老了自己。为什么我今天会抛出这个话题,其实我也是一个懵懂的少年,我也曾经为了成为一名程序...

架构师springboot
35分钟前
9
0
大型网站B2C商城项目实战+MongoDB+Redis+zookeeper+MySQL

本文列出了当今计算机软件开发和应用领域最关键部分,如果你想保证你现在以及未来的几年不失业,那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通,但至少应该对它们非常熟悉。...

java知识分子
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部