【测试开发学习历程】python常用的模块(下)

news2025/1/19 11:04:35

目录

8、MySQL数据库的操作-pymysql

8.1 连接并操作数据库

9、ini文件的操作-configparser

9.1 模块-configparser

9.2 读取ini文件中的内容

9.3 获取指定建的值

10 json文件操作-json

10.1 json文件的格式或者json数据的格式

10.2 json.load/json.loads

10.3 json.dump/json.dumps

11 yaml 文件操作-pyyaml

11.1 yaml 文件的应用场景

11.2 yaml 文件的格式

11.3 第三方包 - pyyaml

12 sys模块

12.1 处理命令行参数--sys.argv

12.2 退出程序,正常退出时exit(0)--sys.exit(n)

12.3 获取Python解释程序的版本信息

12.4 操作系统平台名称


8、MySQL数据库的操作-pymysql

在做测试过程中,我们可以把测试数据创建在数据库,也可以读取数据库中的数据进行断言操作

python操作数据库之前需要安装数据库驱动

  • 安装方式:pip install pymysql

8.1 连接并操作数据库

import pymysql
# 连接数据库
my_connect = pymysql.connect(host = '',user = '',password = '',database = '',port = ,charset = 'utf8')
# 建立游标:目的是为了缓存数据方便操作(读取数据,遍历表中的所有数据,以便查询)
du_shuju = my_connect.cursor()
#执行sql语句
du_shuju.execute("select * from xxxxx;")
#获取数据
huoqu_data = du_shuju.fetchall()
print(huoqu_data)
#修改表中的数据
du_shuju.execute("update 表名 set 字段名="xxx" where 字段名="yyy";")
#提交数据,修改的数据要进行提交才能修改数据库中的数据,否则修改的只是游标缓存里的数据
my_connect.commit()

注意点:链接数据库的connect类返回的是链接对象,使用链接对象创建游标对象。使用游标对象的execute方法执行sql语句。如果是更新表操作需要使用链接对象commit提交。如果是查询操作需要使用游标的对象的fetchall方法获取查询结果,不需要使用链接对象commit提交,因为查询操作没有更新表。

注意点:如果查询操作获取返回结果,使用游标对象的fetchall方法获取。

fetchall方法是临时的,注意需要使用变量结束fetchall方法的返回结果。

9、ini文件的操作-configparser

什么是ini文件

ini文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式。

ini文件的格式:ini文件由节、键、值组成。

[节点/section]
(键=值)
key=value

例子:setup.ini

[Startup]
RequireOS=Windows 7
RequireMSI=3.1
RequireIE=7.0.0000.0
Require64BitVCRT=1
[Windows 7]
PlatformID=2
MajorVersion=6
MinorVersion=1

9.1 模块-configparser

configparser是第三方模块,主要是用来操作ini文件

安装方式:pip install configparser

9.2 读取ini文件中的内容

使用configparser的Configparser类是实例对象的read方法读取ini文件,需要给read传入ini文件路径。

# 注意点:Configparser类的实例对象的read方法的机制:读取ini文件之后加载到Configparser类的实例对象中的。
# 1:获取ini文件的绝对路径   os.path.dirname(os.path.dirname(__file__))获取当前文件父级的父级目录
ini_path = os.path.dirname(os.path.dirname(__file__)) + '/data_config/config.ini'
# 2: 创建Configparser类的实例对象
conf = configparser.ConfigParser()
# 3: 调用read方法读取ini文件
# read("ini文件的路径"):返回值是读取成功的文件路径。机制:讲读取成功的文件加载到Configparser类型的实例对象中
conf.read(ini_path)

9.3 获取指定建的值

使用configparser的Configparser类是实例对象的get方法获取ini文件下指点键对应的值。

conf = configparser.COnfigparser()
​
conf.get("节点名", "键")

10 json文件操作-json

json是用来存储简单的数据结构和对象的文件。json是一种轻量级的数据交换格式,基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,用于许多Web应用程序来进行数据交换。

10.1 json文件的格式或者json数据的格式

1.列表方式 [ ]---列表套字典或者列表套列表
[{
    "id" : 1 ,
    "name" : "xiaoming"
},{
    "id" : 2 , 
    "name" : "xiaohong"
},["name", "age", "sex"]
]
​
2.字典方式 { }--字典套字典或者字典套列表
// 前后端分离,推荐后端返回给前端数据格式
{
    "status" : 0 ,          //执行状态码
    "msg"    : "SUCCESS",   //说明文字信息,没有为NULL
    "data"   :[{            //对象中嵌套数组,数组是返回的数据,
            "id"    : 1 ,
            "name"  : "xiaohong"
        },{
            "id"    : 2,
            "name"  : "xiaoming"
            }]
}
​
3.反例
​
{"id" : ox16 } //不合法,数值需要是十进制
{"name" : underfined } //不合法,没有该值
[{
    "name" : NUll,
    "school" : function() {
        console.log("该写法是错误的")
    }//不合法
}]//json中不能使用自定义函数,或系统内置函数

json模块是python自带的

10.2 json.load/json.loads

  • json.load(文件对象):将json文件转成python对象

  • json.loads(字符串)将字符串数据转成python对象

    # json.laods(字符串)
    json_data = '{"a": {"b": {"c": "数据"}}}'
    result = json.loads(json_data)
    print(type(result))
    ​
    # json.load(文件对象)
    with open(r'json文件路径', mode="r") as f:
        print(json.load(f))
    ​

10.3 json.dump/json.dumps

  • json.dump(obj, fp):将python对象写入json文件

  • json.dumps(obj):将python对象转成json数据

    # json.dumps(obj)
    dict1 = {"a": {"b": {"c": "数据"}}}
    result = json.dumps(dict1)
    print(type(result))
    ​
    # json.dump(obj, fp)
    dict2 = {"a": {"b": {"c": "数据"}}}
    with open(r"json_data.json", mode="w") as fp:
        json.dump(dict2, fp)

11 yaml 文件操作-pyyaml

11.1 yaml 文件的应用场景

yaml其实也类似于 json、txt ,它们都属于一种文本格式。在我们的实际工作中, yaml 文件经常作为服务期配置文件来使用。 比如一些定义好的内容,并且不会修改的信息,我们就可以通过定义 yaml 文件,然后通过读取这样的文件,将数据导入到我们的服务中进行使用。

由于 yaml 文件一般作为配置文件使用,所以较少会修改。

11.2 yaml 文件的格式

1、大小写敏感

2、使用缩进表示层级关系

3、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格

4、不支持Tab键制表符缩进,只使用空格缩进

5、字符后缩进一个空格,如冒号,逗号,短横杆(-)等

6、"—“表示YAML格式,一个文件的开始,用于分隔文件间

7、”#”表示注释 (yaml文件只有行注释)

YAML 支持的数据结构有三种。

  • 对象:键值对的集合,又称为字典(dictionary)

  • 数组:一组按次序排列的值,又称为 列表(list)

  • 纯量(scalars):单个的、不可再分的值

下面对这三种数据结构做详细介绍:

yaml 中的值有以下基本类型:

  • 字符串

  • 整形

  • 浮点型

  • 布尔型

  • null

  • 时间

  • 日期

    # 注释
     
    # 1-1、字典  键: 值
    username: xiaoming  # 冒号后面是空格
    password: 123456
    info: 配置  # 中文---不建议使用,有可能会乱码
     
    # 1-2、字典嵌套
    NAME_PSW:
      name: xiaoming
      password: 123456
    ​
     
    # 字典套列表
    person:
      name: 锋声
      age: 18
      man: true
      address:
        - 深圳
        - 北京
        - 广州
    # 字典套列表   
    person1:
      name: 锋声
      age: 18
      man: true
      address: [深圳, 北京, 广州]
      
    # 字典套列表   
    ​
    childs:
      -
        name: 锋声
        age: 10
      -
        name: 锋声
        age: 15
       
    # 字典套列表  
    person2:
      name: 锋声
      age: 18
      man: true
      address: [深圳, 北京, 广州]
      twoArr:
        -
          - 2
          - 3
          - 1
        -
          - 10
          - 12
          - 30
    ​
    # 列表
    - 1
    - 2
    ​
    # 列表嵌套字典
    - user1: aaa
    - user2: bbb
      age: 10
      sex: male

11.3 第三方包 - pyyaml

pyyaml 的安装:pip install PyYAML

import yaml
 
 
def read(path):
    with open(path, 'r') as file:
        data = file.read()
        result = yaml.load(data)
        # result = yaml.load(data, Loader=yaml.FullLoader)
        return result

这是因为在 YAML 5.1版本后弃用了yaml.load(file)这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader,通过默认加载器(FullLoader)禁止执行任意函数,该load函数也变得更加安全。所以我们需要将 result = yaml.load(data) 改为 result = yaml.load(data, Loader=yaml.FullLoader)

解决该 TypeError 不单单 只有 yaml.load(data, Loader=yaml.FullLoader) 这一个方法。

以下三选一即可解决该 TypeError

yaml.safe_load(file.read())
 
yaml.load(file.read(), Loader=yaml.FullLoader)
 
yaml.load(file.read(), Loader=yaml.CLoader)

12 sys模块

sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。

12.1 处理命令行参数--sys.argv

在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称。

12.2 退出程序,正常退出时exit(0)--sys.exit(n)

sys.exit(5)
print(11)
print(11)
print(11)
# 退出python执行程序,下面的代码将不会执行,如同shell中的exit一样。

12.3 获取Python解释程序的版本信息

import sys
print(sys.version)

12.4 操作系统平台名称

import sys
print(sys.platform)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1602887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony南向开发案例【智慧中控面板(基于 Bearpi-Micro)】

1 开发环境搭建 【从0开始搭建开发环境】【快速搭建开发环境】 参考鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或复制转到。 【注意】:快速上手教程第六步出拉取代码时需要修改代码仓库地址 在MobaXterm中输入…

ES-全文搜索

模糊查询: 写数据通过id路由到master分片 查询数据到一个节点,该节点会作为一个调度节点判断负载等情况将请求转发到真正节点(一般し轮询)

【学习笔记十九】EWM Yard Management概述及后台配置

一、EWM Yard堆场管理业务概述 1.Yard Management基本概念 YARD管理针对的是库房以外的区域,可以理解为入大门开始到库门之前的这部分的区域 堆场结构 像在仓库中一样,将相应仓位映射为堆场仓位,可将其分组到堆场分区。场地中可能具有以下结构: 停车位(Park):在堆场中存…

linux(ub)-redis环境部署

1.下载redis包 wget http://download.redis.io/releases/redis-7.0.5.tar.gz 2.解压缩: tar -zxvf redis-7.0.5.tar.gz 3.安装gcc:sudo apt-get install gcc 4. 编译:cd redis-7.0.5 make make make install 5. cd /usr/local/bin/ 6. mkdir …

JAVA基础08- 继承,重写,super以及this

目录 继承(extends) 定义 说明 作用 方法的重写 定义 重写关键点 方法重写与重载的区别 练习 练习1(方法继承与重写的简单练习) 练习2(方法继承与重写的进阶练习) This的使用 定义 作用以及注…

动态代理,XML,Dom4j

文章目录 动态代理概述特点代码实现实现的关键步骤优点 XML概述作用编写第一个XML文件组成声明元素(标签、标记)属性注释转义字符[实体字符字符区(了解) 约束DTD约束Schema约束名称空间 Dom4jXML解析解析方式和解析器解析方式解析器Snipaste_2024-04-17_21-22-44.png<br /&g…

企业linux-堡垒机与跳板机测试案例-6140字详谈

在开始今天内容前&#xff0c;小编先把专栏前面学的Linux命令&#xff08;部分&#xff09;做了思维导图帮助各位平时的学习&#xff1a; 场景&#xff1a; 运维人员管理三台机器&#xff0c;通过远程连接工具连接上三台机器&#xff0c;也知道这三台机器root密码&#xff0c…

Xshell无法输入命令输入命令卡顿

Xshell是一款功能强大的终端模拟软件&#xff0c;可以让用户通过SSH、Telnet、Rlogin、SFTP等协议远程连接到Linux、Unix、Windows等服务器。然而&#xff0c;在使用Xshell的过程中&#xff0c;我们可能会遇到一些问题。比如输入不了命令&#xff0c;或者输入命令很卡。这些问题…

C++笔记:异常

文章目录 C 运行时错误处理机制及其不足之处C 异常概念异常的使用异常的抛出和匹配原则在函数调用链中异常栈展开匹配原则异常的重新抛出举例演示说明例子一&#xff1a;串联举例演示大部分原则例子二&#xff1a;模拟服务器开发中常用的异常继承体系例子三&#xff1a;异常的重…

千锤百炼之每日算法(一)

目录 题外话 正题 第一题 第一题思路 第一题代码详解 第二题 第二题思路 动态规划 解法一 解法一代码详解 解法二 第三题 第三题思路 第三题代码详解 小结 题外话 从今天开始,每天都会更新算法题,一天就三道题 大家最好采用码形结合的方式,也就是代码和图形结合…

最新最全的Jmeter接口测试必会技能:jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

git出现错误 fail to push some refs to “xxx“

问题产生原因&#xff1a;根据测试猜测造成这一错误的原因是在码云的远程仓库上删除了一个文件,本地没有pull下来,直接进行了commit,commit到本地仓库后,如果在pull下来,也是无法提交的 问题解决办法: 使用 git pull --rebase,拉取远程仓库,并将本地仓库新的提交作为最顶层的提…

C++ 并发编程指南(11)原子操作 | 11.5、内存模型

文章目录 一、C 内存模型1、为什么需要内存模型&#xff1f; 前言 C 11标准中最重要的特性之一&#xff0c;是大多数程序员都不会关注的东西。它并不是新的语法特性&#xff0c;也不是新的类库功能&#xff0c;而是新的多线程感知内存模型。本文介绍的内存模型是指多线程编程方…

(算法版)基于二值图像数字矩阵的距离变换算法

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目展示了欧氏距离、城市街区距离和棋盘距离变换的实现方法。通过定义一个距离变换类&#xff0c;对输入图像进行距离变换操作&#xff0c;并生成对应的距离矩阵。在示例中&#xff0c;展示了在一个480x480的全黑背景图像上设…

GPT国内怎么用?4月最新版本来了

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

基于SpringBoot+Vue的疾病防控系统设计与实现(源码+文档+包运行)

一.系统概述 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对疾病防控信息管理的提升&a…

20240329-2-树模型集成学习TreeEmbedding

树模型集成学习 集成学习主要有两个思想&#xff0c;分别是bagging和boosting。树模型的集成模型都是使用树作为基模型&#xff0c;最常用的cart树&#xff0c;常见的集成模型有RandomForest、GBDT、Xgboost、Lightgbm、Catboost。 概要介绍 RandomForest 随机森林(Random …

spring的redis注解@Cacheable @Cacheput @CacheEvict的condition、unless

概述 redis的注解使用的过程中总会遇到condition和unless这两个属性&#xff0c;而且不同的注解使用注意事项不一样。本人也是错误使用之后详细查询了一下&#xff0c;作了如下的总结。 Cacheale 这个注解的使用和意义这里不多说&#xff0c;可以查看我的其他文档。这里主要说…

nginx安装在linux上

nginx主要用于反向代理和负载均衡&#xff0c;现在简单的说说如何在linux操作系统上安装nginx 第一步&#xff1a;安装依赖 yum install -y gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel 第二步&#xff1a; 下载nginx&#xff0c;访问官网&#xff0c;ngin…