当前位置: 首页 > news >正文

【测试开发学习历程】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)

相关文章:

【测试开发学习历程】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.du…...

GCDAsynSocket之TCP简析

GCDAsynSocket是一个开源的基于GCD的异步的socket库。它支持IPV4和IPV6地址&#xff0c;TLS/SSL协议。同时它支持iOS端和Mac端。本篇主要介绍一下GCDAsynSocket中的TCP用法和实现。 首先通过下面这个方法初始化一个GCDAsynSocket对象。 - (id)initWithDelegate:(id<GCDAsyn…...

大型网站系统架构演化实例_1.单体架构和垂直架构

大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户&#xff0c;问题就会变得很棘手。通常大型网站架构主要解决这类问题。 1.第一阶段&#xff1a;单体架构 大型网站都是…...

2024蓝桥杯——宝石问题

先展示题目 声明 以下代码仅是我的个人看法&#xff0c;在自己考试过程中的优化版&#xff0c;本人考试就踩了很多坑&#xff0c;我会—一列举出来。代码可能很多&#xff0c;但是总体时间复杂度不高只有0(N) 函数里面的动态数组我没有写开辟判断和free&#xff0c;这里我忽略…...

three.js加载模型报错,Error: THREE.GLTFLoader: No DRACOLoader instance provided.

three.js加载模型报错&#xff0c;Error: THREE.GLTFLoader: No DRACOLoader instance provided. 原因&#xff1a;该模型是压缩过的&#xff0c;需要 DRACOLoader 我们先找到该文件夹 node_modules three examples jsm libs draco 将draco拷贝到public下 import { GLTFLoad…...

Spring VS Spring Boot

目录 定义 Spring Spring Boot 区别 优劣对比 Spring Spring的优势 Spring的劣势 Spring Boot Spring Boot的优势 Spring Boot的劣势 适用场景 Spring的适用场景 Spring Boot的适用场景 初学者如何选择学习 定义 Spring Spring是一个轻量级的、开源的Java开发…...

Linux入门(Linux介绍,安装,常用命令,防火墙的设置,注意事项)

目录 一、Linux介绍 1. Linux简介 1 什么是Linux 2 Linux的应用 3 为什么要学习Linux 2. Linux分类 1 按照市场需求分 2 按照原生程度分 3.小结 二、Linux安装 1. vmware介绍 2. 安装VMWare 3. 安装CentOS 4. 登录查看ip 5. 远程连接工具 1 使用FinalShell连接L…...

vue2创建项目的两种方式,配置路由vue-router,引入element-ui

提示&#xff1a;vue2依赖node版本8.0以上 文章目录 前言一、创建项目基于vue-cli二、创建项目基于vue/cli三、对吧两种创建方式四、安装Element ui并引入五、配置路由跳转四、效果五、参考文档总结 前言 使用vue/cli脚手架vue create创建 使用vue-cli脚手架vue init webpack创…...

MySql 表中的id突然变很大,如何给id重新排序

目录 一、场景 二、解决方法 一、场景 我们在开发过程中&#xff0c;难免遇到id突然增大的情况。 由于id突然增大很多&#xff0c;我们重新增加数据时候id会默认加1 那么如何让id 重新从1按顺序排序呢 二、解决方法 点击编辑表&#xff0c;然后新建一个字段id2&#xff0c;将…...

leetcode练习——哈希表

目录 3. 无重复字符的最长子串 题目描述 解题思路 代码实现 349. 两个数组的交集 题目描述 解题思路 代码实现 ​​​​454. 四数相加 II 题目描述 解题思路 代码实现 242. 有效的字母异位词 题目描述 解题思路 代码实现 438. 找到字符串中所有字母异位词 题目…...

配置交换机 SSH 管理和端口安全

实验1:配置交换机基本安全和 SSH管理 1、实验目的 通过本实验可以掌握&#xff1a; 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 2、实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 3、实验步骤 &#xff08;1&#xff09;配置交换机S1 Swit…...

基于SpringBoot+Vue的装饰工程管理系统(源码+文档+包运行)

一.系统概述 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统装饰工程项目信息管理难度大&#xff0c;容错率低&a…...

vue3中axios添加请求和响应的拦截器

本章主要是以记录为主。 在src创建一个utils文件夹&#xff0c;并在utils中创建一个request.js文件。 // 引入axios import axios from "axios"; // import qs from "qs"; // 创建axios实例 const instance axios.create(); // 请求拦截器 instance.int…...

<router-link>出现Error: No match for {“name“:“home“,“params“:{}}

在将<a></a>标签换到<router-link></router-link>的时候出现No match for {"name":"home","params":{}}这样的错误&#xff0c;其中格式并无错误&#xff0c; <router-link class"navbar-brand active" …...

prompt 工程整理(未完、持续更新)

工作期间会将阅读的论文、一些个人的理解整理到个人的文档中&#xff0c;久而久之就积累了不少“个人”能够看懂的脉络和提纲&#xff0c;于是近几日准备将这部分略显杂乱的内容重新进行梳理。论文部分以我个人的理解对其做了一些分类&#xff0c;并附上一些简短的理解&#xf…...

兼容性测试用例

备注:本文为博主原创文章,未经博主允许禁止转载。如有问题,欢迎指正。 个人笔记(整理不易,有帮助,收藏+点赞+评论,爱你们!!!你的支持是我写作的动力) 笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔:工作总结随笔_8、…...

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

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

ts 中的keyof 和typeof

作用&#xff1a; keyof&#xff1a;用于获取对象类型的所有键的联合类型。typeof&#xff1a;用于获取变量或表达式的类型。 返回类型&#xff1a; keyof&#xff1a;返回的是一个对象类型的所有键组成的联合类型。typeof&#xff1a;返回的是一个值的类型。 使用场景&#xf…...

每日一题:买卖股票的最佳时机II

给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得的 最大 利润 。 示例 1&a…...

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…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...