首页 > 编程语言 >Python_16 配置文件与封装

Python_16 配置文件与封装

时间:2023-05-03 22:56:52浏览次数:46  
标签:文件 conf 配置文件 16 Python section yaml key

一、查缺补漏
1. ctrl + alt +L 规范格式
2. Python 使用 ini&yaml 配置文件
 http://testingpai.com/article/1621245437855
3. 如何进行SDK的测试
 https://www.cnblogs.com/winson-317/p/9896645.html
4. Shift+alt+E 执行选中的代码
二、配置文件分类 三种配置文件效率一致,py最方便
1. 硬编码与软编码
 a. 软编码:参数化整个项目配置,通过参数实现比如设置name为参数,调用时赋值
 b. 硬编码:写死的编码方式,比如说里name=alisa就是硬编码,要修改alisa要改代码
2. xxx.ini:django项目部署用uwsgi,配置文件为ini文件,有时java开发也会用到
3. xxx.yaml:java用的多,dockercompose会用到,docker和k8s都用到
4. xxx.py:python文件,django项目多是py文件 如:settings.py
5. 使用场景:生产环境和测试环境的区别:ip不一样、数据库地址不一样、密码不一样、账号不一样
将配置文件中的ip等数据更改就可以切换生产环境和测试环境~
三、xxx.ini 文件
1. 写法:在项目下点击New->File->创建一个后缀为.ini的文件
 [section] -- 可以自己定义
 key1=val1
 key2=val2
 key3=val3
 相似于
 test_dict={"key1":"val1","key2":"val2","key3":"val3"}
 print(test_dict["key1"])
 test_conf={"testpy1":{"key1":"val1","key2":"val2","key3":"val3"},
 "testpy2":{"key1":"val1","key2":"val2","key3":"val3"}}
2. 特点:
  a. section不能重复
  b. 同一个section中的key不能重复
  c. 等号两边不能有空格
  d. 获取值默认是字符串类型
  e. 添加、删除、修改只是对缓存区域的改变,不会真实修改文件
3. 常用方法:
  a. 获取所有的sections 两种方式
   赋值对象1= conf.sections() 不需要list强制类型转换
   赋值对象2 = conf.keys() 结果会多一个'DEFAULT' 需要list强制类型转换
  b. 获取指定sections下所有的options(key)
   test_options = conf.options(section='想要查询的section部分') 获取key
   test_options=conf.items(section='想要查询的section部分') 获取key(options),value
  c. 直接获取key(options)的value
    i. 默认获取到的是str【常用】
     value = conf.get(section='想要查询的section部分', option='想查询val的key值')
    ii. 获取布尔值
     value2=conf.getboolean(section='想要查询的section部分', option='想查询val为True/False的key值')
    iii. 获取数值(int类型),不能使用小数,只能写整数
     value3 = conf.getint(section='想要查询的section部分', option='想查询val为int类型的key值')
    iv. 获取数值(float类型)
     value4 = conf.getfloat(section='想要查询的section部分', option='想查询val为float类型的key值')

4. 其他操作
  a. 添加 sections(操作在内存中,不会保存到文件里) conf.add_section('your_section')
  b. 添加 key,val(操作在内存中,不会保存到文件里) conf.set('your_section','key22','val22')
  c. 删除(操作在内存中,不会保存到文件里) conf.remove_option('your_section', "key1") 对写入的文档有效

          

          

  d. 写入文件:将你内存你的数据全部写入文件进行覆盖,conf 初始化的时候读取的是所有对象
   conf.write(fp=open(file=文件路径,mode='w'))

四、xxx.yaml 文件
1. 新建yaml文件 :在项目下点击New->File->创建一个后缀为.yaml的文件
2. 写法:如果是写字典类型就只能是字典类型,如果写列表类型就只能是列表类型
 key1: val1
 key2:
  - test01 ---列表
  - test02
  - test03
3. 数据类型只支持一种,写多种只能嵌套在val里类似于-> {key1:val1,key2:[test01, test02, test03]}
4. 特点:
  a. 使用缩进来表示层级关系
  b. key值要和val值保持一个空格,杠和列表中间也要一个空格
  c. 大小写敏感
  d. 同一个层级的要对齐
  e. 只能用空格,不要用tab
  f. 一个yaml对外只支持一种数据类型
  g. yanl文件是一次性读取,不支持连续读取
  h. 读取出来就是python对象,可以直接取值使用
5. 常用方法:
  a. open(file=file_path,encoding="utf-8") 打开文件 路径可以拼接为绝对路径,但使用相对路径也可以
  b. value = yaml.load(stream=file,Loader=yaml.FullLoader) 固定搭配,读取全部文件内容

        

   另一种方法是open打开但是需要手动关闭

       

6. 安装yaml pip install pyyaml

五、封装
1. ini的封装

2. yaml的封装
a. 用函数封装

b. 用类封装

六、一些重要的点
1. 老师的博客里面有很多知识,去看看
2. 项目中使用的常量,我们把它收集在一个文件中,这个就是配置文件,配置文件在项目中是非常有必要的,它避免了项目中文件对常量的分散使用,让常量可以一致修改,避免造成修改不全面的问题
3. 使用open 打开文件需要手动关闭,使用with open的时候自动关闭所以不需要手动close

 

标签:文件,conf,配置文件,16,Python,section,yaml,key
From: https://www.cnblogs.com/Alisa-sweet/p/17368457.html

相关文章

  • 查看Nginx容器中的配置文件
    要查看Nginx容器中的配置文件,可以按照以下步骤进行:进入正在运行的Nginx容器:dockerexec-it<nginx-container-name>bash其中,<nginx-container-name>是Nginx容器的名称。在容器内部,浏览到/etc/nginx/目录,这是Nginx配置文件所在的目录。使用以下命令可以查看该目录中的所......
  • Python实现艾宾浩斯背单词功能
    本项目主要是通过在事先准备好的excel单词文件中每天抽取单词,并反复使用QQ邮箱发送到自己的邮箱里提醒自己有一定规律的背单词,项目最大的难点有三。对于csv文件的对应切片任务等操作对于日志的记录艾宾浩斯记忆法是一个周期性的过程,需要反复的计算。当然,由于这个项目的文件还是......
  • 使用Python实现基于图像的物体识别技术
    摘要:物体识别是计算机视觉技术中的一个核心问题,其应用涵盖了许多领域。本文将介绍如何使用Python编写一个简单的基于图像的物体识别程序,并且通过实际案例展示其应用。关键词:Python,物体识别,计算机视觉,OpenCV一、需求分析在使用Python实现物体识别技术之前,我们需要了解应用的具体需求......
  • 使用Python实现Ubuntu搜狗输入法的安装
    Ubuntu搜狗输入法在每次安装后都需要重新配置,非常繁琐。我们可以使用Python的subprocess模块来实现。以下是示例代码,它使用了subprocess模块中的check_call()函数来执行安装命令:importsubprocesssubprocess.check_call(['sudo','add-apt-repository','-y','ppa:fcitx-team/nig......
  • Python基础
    预计更新一、爬虫技术概述1.1什么是爬虫技术1.2爬虫技术的应用领域1.3爬虫技术的工作原理二、网络协议和HTTP协议2.1网络协议概述2.2HTTP协议介绍2.3HTTP请求和响应三、Python基础3.1Python语言概述3.2Python的基本数据类型3.3Python的流程控制语句3.4Python的函数和......
  • 【Python&Hypermesh】ABAQUS导入网格,并在Part内保留SET
    在Hypermesh定义好set,划分好网格以后,可以导出为INP。然后在ABAQUS导入inp,就可以得到网格。但是这样倒进来的网格一般有两个问题:网格全在一个部件里,原来定义好的Set会出现在装配级别下,而不是Part级别,这在某些情况还是比较麻烦的Hypermesh中的component并不和ABAQUS的Part相对应......
  • DevOps 基于Rancher 2.3 Kubernetes 1.16
    一服务器清单 二初始化服务器:安装Docker Docke-compose以及配置Docker阿里云镜像加速此处略过三 192.168.117.104安装RancherServerdockerrun-d--restart=unless-stopped\-p8080:80-p8443:443\-eCATTLE_SYSTEM_CATALOG=bundled\-eAUDIT_LEVEL=3\ranc......
  • Python flask-sqlalchemy
    安装pip3installmysql-connector-pythonpipinstallflask_sqlalchemy /setting.pyclassConfigs:#数据库信息MYSQL_USER=''MYSQL_PWD=''MYSQL_HOST=''MYSQL_PORT=''DBNAME=''......
  • Python - 字典视图
    dict的实例方法.keys()、.values()、.items()分别返回dict_keys、dict_values和dict_items类的实例。这些字典视图是dict内部实现使用的数据结构的只读投影。Python2种对应的方法返回列表,重复dict中已有的数据,有一定的内存开销。另外,视图还取代了返回迭代器的旧方法>>>d......
  • GUID转换成16位、19位、22位唯一字符串
    ///<summary>///依据GUID获取16位的唯一字符串///<paramname=\"guid\"></param>///<returns></returns>publicstaticstringGuidTo16String(){longi=1;......