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

目录

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: xiaomingpassword: 123456
    ​# 字典套列表
    person:name: 锋声age: 18man: trueaddress:- 深圳- 北京- 广州
    # 字典套列表   
    person1:name: 锋声age: 18man: trueaddress: [深圳, 北京, 广州]# 字典套列表   
    ​
    childs:-name: 锋声age: 10-name: 锋声age: 15# 字典套列表  
    person2:name: 锋声age: 18man: trueaddress: [深圳, 北京, 广州]twoArr:-- 2- 3- 1-- 10- 12- 30
    ​
    # 列表
    - 1
    - 2
    ​
    # 列表嵌套字典
    - user1: aaa
    - user2: bbbage: 10sex: male

11.3 第三方包 - pyyaml

pyyaml 的安装:pip install PyYAML

import yamldef 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.mzph.cn/news/823673.shtml

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

相关文章

【八股】Redisson分布式锁

Redisson分布式锁 主要了解了Redisson分布式锁实现的三个功能: 1.可重入 -> 防止死锁 2.可重试(i.e. 非阻塞获取锁) 3.自动续约 1. 可重入 原理: 利用Redis的Hash结构,记录了使用当前锁的线程id和重用次数&#…

Linux系统——Elasticsearch企业级日志分析系统

目录 前言 一、ELK概述 1.ELK简介 2.ELK特点 3.为什么要使用ELK 4.完整日志系统基本特征 5.ELK工作原理 6.Elasticsearch介绍 6.1Elasticsearch概述 6.2Elasticsearch核心概念 7.Logstash介绍 7.1Logstash简介 7.2Logstash主要组件 8.Kibana介绍 8.1Kibana简介 …

考研数学|「基础」和「强化」阶段分别怎么做?

从目前考研数学的趋势来看,更加注重数学基础的理解和计算量。也就是基础知识和计算,如何锻炼这两种能力就显得尤为重要。希望我的复习经验可以给到读者一些启发。 数学规划 从备考过程来看,数学的复习可以分为三个阶段:1、基础阶…

监控系统Prometheus--与第三方框架集成

文章目录 Prometheus和Flink集成拷贝jar包修改Flink配置为了运行测试程序,启动netcat启动hdfs、yarn,提交flink任务到yarn上可以通过8088跳到flinkUI的job页面,查看指标统计刷新Prometheus页面,如果有flink指标,集成成…

linux线程的同步

目录 1.死锁概念 2.接口 3.代码展示 1.死锁概念 死锁的四个必要条件(必须同时满足): 1.互斥条件:一个资源每次只能被一个执行流使用(前提)。 2.请求与保持条件:一个执行流因请求资源而堵塞…

如何查看Postman的版本信息?

如何查看Postman的版本信息 一、为何需要查看版本信息?二、查看Postman的版本信息的步骤 一、为何需要查看版本信息? 不同的版本之间可能存在功能和界面的差异。 二、查看Postman的版本信息的步骤 1、打开 Postman 2、打开设置项 点击页面右上角的 “…

Spring-tx事务管理

第五章 Spring声明式事务 一 声明式事务概念 1.1 编程式事务 手动编写程序来管理事务,即通过编写代码的方式来实现事务的提交,和回滚。 1.2 声明式事务 声明式事务是指使用注解或配置文件来控制事务的提交和回滚。 开发者只需要添加注解或者配置文…

陇剑杯 流量分析 webshell CTF writeup

陇剑杯 流量分析 链接:https://pan.baidu.com/s/1KSSXOVNPC5hu_Mf60uKM2A?pwdhaek 提取码:haek目录结构 LearnCTF ├───LogAnalize │ ├───linux简单日志分析 │ │ linux-log_2.zip │ │ │ ├───misc日志分析 │ │ …

[SWPUCTF 2021 新生赛]error

如果 flag 只出现一半,用substr(A,B,C) 查询flag 1 and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 1 , 31))))) # 0-30位 左边30位 1and (select extractvalue(1,concat(~,(select substr((select flag from test_tb), 31 , 6…

vivado 设置 VIO 核以执行测量、查看 VIO 核状态

设置 VIO 核以执行测量 您添加到自己的设计中的 VIO 核会显示在“硬件 (Hardware) ”窗口中的目标器件下。如果未显示这些 VIO 核 , 请右键 单击器件并选择“ Refresh Hardware ”。这样将重新扫描 FPGA 或 ACAP 并刷新“ Hardware ”窗口。 注释 &#xff…

阿里云4核8G云服务器价格多少钱?700元1年

阿里云4核8G云服务器价格多少钱?700元1年。阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采用Intel(R) Xeon(R…

久吾高科技股份有限将莅临2024第13届生物发酵展

参展企业介绍 江苏久吾高科技股份有限公司成立于1997年,是一家专注从事新材料研发与整体解决方案的高科技企业。2017年3月在深交所A股创业板上市。公司是首批认定的guojiaji高新技术企业、国家专精特新“小巨人”企业、国家制造业单项、中国膜行业陶瓷膜领域龙头企…

使用vite从头搭建一个vue3项目(三)vite.config.js配置

目录 一、声明环境变量配置文件二、vite.config.js基础配置1、defineConfig()、loadEnv()2、plugins配置项3、server配置项4、resolve配置项5、css配置项6、build配置项 三、vite.config.js配置完整代码 VITE版本:v5.2.8 一、声明环境变量配置文件 在根目录下新建…

Qt 系统相关

这里写目录标题 Qt 事件事件介绍事件的处理按键事件单个按键组合按键 ⿏标事件⿏标单击事件⿏标释放事件⿏标双击事件⿏标移动事件滚轮事件 定时器QTimerEvent 类QTimer 类获取系统⽇期及时间 事件分发器概述事件分发器⼯作原理 事件过滤器 Qt ⽂件Qt ⽂件概述输⼊输出设备类⽂…

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

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

HarmonyOS开发实例:【任务延时调度】

介绍 本示例使用[ohos.WorkSchedulerExtensionAbility] 、[ohos.net.http]、[ohos.notification] 、[ohos.bundle]、[ohos.fileio] 等接口,实现了设置后台任务、下载更新包 、保存更新包、发送通知 、安装更新包实现升级的功能。 效果预览 使用说明 安装本应用之…

数字乡村探索:引领农村未来发展新方向——科技创新赋能乡村现代化与农民生活品质提升之旅

目录 一、数字乡村的内涵与特点 二、数字乡村的探索进展 三、数字乡村面临的挑战与机遇 四、数字乡村的未来发展方向与路径 五、数字乡村助力农村产业升级 六、数字乡村促进城乡融合发展 七、数字乡村激发农民创新创业活力 八、数字乡村提升农民获得感和幸福感 九、展…

Postman还能做Mock?又学了一招!

1、什么是mock测试 Mock 测试就是在测试活动中,对于某些不容易构造或者不容易获取的数据/场景,用一个Mock对象来创建以便测试的测试方法。 2、Mock测试常见场景 无法控制第三方系统接口的返回,返回的数据不满足要求 依赖的接口还未开发完成…

Scala 02——Scala OOP

文章目录 Scala 02——Scala OOP前序类1. 类的基本结构2. 普通类和数据类的区别 继承1. extends2. override 抽象类抽象类的特点 单例对象1. 定义2. 场景3. 方法3.1 方法定义3.2 方法调用 特质1. 抽象类和特质的区别2. 强制混入语法3. 静态混入和动态混入 内部类Java和Scala内部…

【C语言】贪吃蛇项目(1) - 部分Win32 API详解 及 贪吃蛇项目思路

文章目录 一、贪吃蛇项目需要实现的基本功能二、Win32 API介绍2.1 控制台2.2 部分控制台命令及调用函数mode 和 title 命令COORD 命令GetStdHandle(获取数据)GetConsoleCursorInfo(获取光标数据)SetConsoleCursorInfo &#xff08…