Python常用的自动化小脚本!

一、list转json、string转json

可以使用Python内置的json模块将列表(List)和字符串(String)转换成JSON格式。

List转JSON假设我们有一个列表(List):my_list = ['apple', 'banana', 'cherry']
我们可以使用json.dumps()函数将该列表转换成JSON格式:import jsonjson_data = json.dumps(my_list)print(json_data)  # 输出结果:["apple", "banana", "cherry"]
​​​​
String转JSON假设我们有一个字符串(String):my_string = '{"name": "John", "age": 30, "city": "New York"}'
我们可以使用json.loads()函数将该字符串转换成JSON格式:import jsonjson_data = json.loads(my_string)print(json_data)  # 输出结果:{'name': 'John', 'age': 30, 'city': 'New York'}

注意,json.loads()函数将字符串转换成Python字典(Dict)对象,而不是JSON字符串。如果需要将Python字典对象转换成JSON字符串,可以使用json.dumps()函数。

二、时间格式转换

在Python中,可以使用datetime模块对时间进行格式转换。下面是一些示例:​​​​​​

将字符串转换为时间对象from datetime import datetime# 字符串格式:2022-04-21 13:30:00string_time = '2022-04-21 13:30:00'# 将字符串转换为时间对象time_obj = datetime.strptime(string_time, '%Y-%m-%d %H:%M:%S')# 输出时间对象print(time_obj)  # 输出结果:2022-04-21 13:30:00

在上面的代码中,使用datetime.strptime()函数将字符串时间格式转换成时间对象。第一个参数为字符串时间,第二个参数为时间格式字符串,'%Y'表示年份,'%m'表示月份,'%d'表示日期,'%H'表示小时,'%M'表示分钟,'%S'表示秒。

将时间对象转换为字符串from datetime import datetime# 时间对象time_obj = datetime.now()# 将时间对象转换为字符串string_time = time_obj.strftime('%Y-%m-%d %H:%M:%S')# 输出字符串时间print(string_time)  # 输出结果:2023-04-21 16:52:22

在上面的代码中,使用datetime.strftime()函数将时间对象转换成字符串时间格式。与上面的例子类似,第一个参数为时间对象,第二个参数为时间格式字符串,'%Y'表示年份,'%m'表示月份,'%d'表示日期,'%H'表示小时,'%M'表示分钟,'%S'表示秒。

时间戳与时间对象的转换

from datetime import datetime# 时间戳timestamp = 1650649800# 将时间戳转换为时间对象time_obj = datetime.fromtimestamp(timestamp)# 输出时间对象print(time_obj)  # 输出结果:2022-12-21 12:30:00# 将时间对象转换为时间戳timestamp = int(time_obj.timestamp())# 输出时间戳print(timestamp)  # 输出结果:1650649800
在上面的代码中,使用datetime.fromtimestamp()函数将时间戳转换成时间对象。使用datetime.timestamp()函数将时间对象转换成时间戳。注意,时间戳是指自1970年1月1日以来的秒数。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

三、读取文件地址

在Python中,可以使用open()函数打开文件并读取其中的内容。在使用open()函数时,需要指定文件路径和文件打开模式。文件路径可以是相对路径或绝对路径。

以下是一些示例:

读取当前目录下的文件

假设当前目录下有一个名为example.txt的文件,可以使用以下代码读取文件内容:with open('example.txt', 'r') as f:    content = f.read()    print(content)

在上面的代码中,使用open()函数打开example.txt文件,并指定了打开模式为'r',即只读模式。使用with语句可以自动关闭文件。使用f.read()函数读取文件内容,并将内容赋值给变量content。最后输出文件内容。

读取其他目录下的文件

假设要读取/home/user/Documents/example.txt文件的内容,可以使用以下代码:with open('/home/user/Documents/example.txt', 'r') as f:    content = f.read()    print(content)

在上面的代码中,指定了文件的绝对路径/home/user/Documents/example.txt。同样使用with语句和f.read()函数来读取文件内容并输出。

需要注意的是,使用绝对路径可以避免由于相对路径不正确导致无法读取文件的情况。但是,如果代码要在不同的操作系统中运行,文件路径的格式可能不同。在Linux系统中,文件路径使用斜杠/分隔;在Windows系统中,文件路径使用反斜杠\分隔。如果要编写可移植的代码,建议使用os.path模块来处理文件路径。

四、二维码图片生成

在Python中,可以使用qrcode库来生成二维码图片。以下是一个示例代码:​​​​​​

import qrcode# 创建二维码对象qr = qrcode.QRCode(    version=1,    error_correction=qrcode.constants.ERROR_CORRECT_L,    box_size=10,    border=4,)# 设置要生成的字符串data = 'https://www.example.com/'# 添加数据到二维码对象中qr.add_data(data)# 编译二维码对象qr.make(fit=True)# 创建二维码图片img = qr.make_image(fill_color='black', back_color='white')# 保存二维码图片img.save('qrcode.png')
在上面的代码中,首先创建了一个二维码对象qr,并设置了版本、纠错级别、方块大小和边框大小。然后设置了要生成的字符串data,并将其添加到二维码对象中。接着,调用make()方法编译二维码对象。最后,调用make_image()方法生成二维码图片,并将其保存为qrcode.png文件。

生成的二维码图片可以根据需求进行调整,如改变方块颜色、背景颜色、二维码大小等等。qrcode库提供了许多选项供调整。

需要注意的是,生成二维码图片时,需要安装qrcode库。可以使用pip命令来安装:pip install qrcode

安装完成后即可使用qrcode库生成二维码图片。

五、条形码图片生成

在Python中,可以使用barcode库来生成条形码图片。以下是一个示例代码:

import barcodefrom barcode.writer import ImageWriter# 设置要生成的字符串data = '123456789'# 创建EAN13条形码对象ean = barcode.get('ean13', data, writer=ImageWriter())# 保存条形码图片filename = ean.save('barcode')
在上面的代码中,首先设置了要生成的字符串data。然后创建了一个EAN13条形码对象,指定了条形码类型和要生成的字符串。最后调用save()方法将条形码图片保存为barcode.png文件。

barcode库支持多种条形码类型,如EAN13、EAN8、Code39等等。可以根据需求选择不同的类型来生成不同类型的条形码图片。​​​​​​​

需要注意的是,生成条形码图片时,需要安装barcode库。可以使用pip命令来安装:pip install python-barcode

安装完成后即可使用barcode库生成条形码图片。

六、身份证号码批量生成

可以使用Python中的id-validator库来生成符合规范的身份证号码。以下是一个示例代码:​​​​​​​

from id_validator import validator# 生成10个符合规范的身份证号码for i in range(10):    id_card = validator.create_id_card()    print(id_card)
在上面的代码中,首先导入id-validator库中的validator模块。然后使用create_id_card()函数生成符合规范的身份证号码,并将其打印出来。​​​​​​​
需要注意的是,id-validator库需要安装才能使用。可以使用pip命令来安装:pip install id-validator

另外,生成身份证号码时需要注意遵守国家的相关规定,不得违法或滥用。

七、list数据对比

在Python中,可以使用set集合或列表解析来对比两个列表之间的差异或相同元素。

  1. 使用set集合​​​​​​​

list1 = [1, 2, 3, 4, 5]list2 = [3, 4, 5, 6, 7]set1 = set(list1)set2 = set(list2)# 求交集intersection = set1.intersection(set2)print(list(intersection))# 求并集union = set1.union(set2)print(list(union))# 求差集difference = set1.difference(set2)print(list(difference))
在上面的代码中,首先将两个列表转换成set集合,然后可以使用intersection方法求交集、union方法求并集和difference方法求差集。最后,将集合转换成列表进行打印。
  1. 使用列表解析​​​​​​​

list1 = [1, 2, 3, 4, 5]list2 = [3, 4, 5, 6, 7]# 求交集intersection = [x for x in list1 if x in list2]print(intersection)# 求并集union = list(set(list1 + list2))print(union)# 求差集difference = [x for x in list1 if x not in list2]print(difference)
在上面的代码中,使用列表解析对比两个列表之间的差异或相同元素。其中,intersection列表解析中使用了条件判断,只有当xlist2中才会被添加到结果中;union列表解析中先将两个列表相加再转换成set集合,最后再转换成列表;difference列表解析中同样使用了条件判断,只有当x不在list2中才会被添加到结果中。

以上两种方法都可以对比两个列表之间的差异或相同元素,可以根据具体需求选择使用哪种方法。

八、json数据对比

在Python中,可以将JSON数据转换为Python对象,例如字典或列表,然后再进行对比。以下是一个示例代码:​​​​​​​

import json# 定义两个JSON数据json_str1 = '{"name": "Tom", "age": 18, "gender": "male"}'json_str2 = '{"name": "Jerry", "age": 20, "gender": "male"}'# 将JSON数据转换为Python对象data1 = json.loads(json_str1)data2 = json.loads(json_str2)# 对比两个Python对象for key in data1:    if key in data2:        if data1[key] != data2[key]:            print(key, "不相同:", data1[key], data2[key])    else:        print(key, "在第二个JSON数据中不存在")for key in data2:    if key not in data1:        print(key, "在第一个JSON数据中不存在")
在上面的代码中,首先定义了两个JSON数据字符串json_str1json_str2。然后使用json.loads()函数将JSON数据转换为Python对象。最后对比两个Python对象中的差异或相同元素,打印出不相同或不存在的键值对。

需要注意的是,对比JSON数据时需要注意JSON数据的格式是否正确,否则可能会导致JSON数据解析失败,无法转换成Python对象。

九、批量获取类方法

在Python中,可以使用反射机制来获取一个类中的所有方法,包括实例方法和类方法。以下是一个示例代码:​​​​​​​

class MyClass:    def __init__(self, name):        self.name = name
    def my_method1(self):        pass
    def my_method2(self):        pass
    @classmethod    def my_classmethod(cls):        pass
    @staticmethod    def my_staticmethod():        pass
# 获取类的所有方法,包括实例方法和类方法methods = [func for func in dir(MyClass) if callable(getattr(MyClass, func))]
# 打印方法名for method in methods:    print(method)
在上面的代码中,定义了一个MyClass类,其中包含了实例方法、类方法和静态方法。使用dir(MyClass)获取MyClass类的所有属性和方法,然后使用callable(getattr(MyClass, func))判断属性或方法是否可以被调用。最后使用列表解析将可调用的方法名保存在methods列表中,遍历列表并打印每个方法的名字。

需要注意的是,这种方法仅仅只能获取到可调用的方法名,但是不能获取到方法的参数信息和返回值信息。如果需要获取到这些信息,可以使用Python内置的inspect模块来实现。

十、文件到达1M后,按照时间清除文件

可以使用Python中的ostime模块来实现当文件大小超过1M时,按照一定时间间隔清除文件的操作。以下是一个示例代码:​​​​​​​

import osimport time
def clear_file(file_path, limit_size=1024*1024, clear_interval=3600):    """    清除文件,当文件大小超过limit_size时,按照clear_interval的时间间隔清除文件。    :param file_path: 文件路径    :param limit_size: 文件大小限制,默认为1M    :param clear_interval: 清除文件的时间间隔,默认为3600秒(1小时)    """    while True:        # 获取文件大小        file_size = os.path.getsize(file_path)
        # 如果文件大小超过限制,则清除文件        if file_size > limit_size:            os.remove(file_path)            print("文件已清除,文件路径:", file_path)        else:            print("文件大小未超过限制,文件路径:", file_path)
        # 等待一定时间间隔后再进行下一次清除        time.sleep(clear_interval)
# 示例用法clear_file("test.txt", limit_size=1024*1024, clear_interval=3600)

在上面的代码中,定义了一个clear_file()函数,该函数接收文件路径、文件大小限制和清除文件的时间间隔三个参数。通过循环,不断获取文件大小并判断文件大小是否超过限制,如果超过限制,则清除文件,否则等待一定时间间隔后再进行下一次清除。

需要注意的是,清除文件可能会对系统产生一定的影响,因此在使用该函数时需要谨慎。另外,在实际应用中,还需要考虑清除文件时可能会产生的异常情况,如文件被占用等。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

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

相关文章

安装JDK: 错误1316.指定的账户已存在

安装JDK: 错误1316.指定的账户已存在 引方案尝试JDK卸载重装JDK注册表清理JDK21JDK1.8 解压版JDK1.8 8u3xx 引 在执行了某个神秘脚本后,我电脑的很多软件就不可用了,怀疑是注册表被动到了,包括java开发必备的JDK,也无…

TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统,它与Apache Subversion(SVN)集成在一起,提供了一个用户友好的界面,方便用…

【Docker】在Windows操作系统上安装Docker

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

Lucas求大组合数C(n,m)%p

将大组合数C&#xff08;n,m&#xff09;%p分解为小组合数C&#xff08;n,m&#xff09;%p乘积的模&#xff0c;n<10^18,m<10^18。 其中求解小组合数可以根据定义式计算&#xff08;质因子分解&#xff09;&#xff0c;也可以通过定义式的变形计算&#xff08;逆元&…

Golang个人web框架开发-学习流程

Golang-个人web框架 github仓库创建github仓库 web框架学习开发周期第一阶段--了解第一阶段思考小结 第二阶段第三阶段 github仓库 github地址&#xff1a;ameamezhou/golang-web-frame 后续还将继续学习更新 创建github仓库 设置免密登录 ssh-keygen 一路回车就OK 上面有告…

docker安装marcocesarato/php-conventional-changelog报错

composer require --dev marcocesarato/php-conventional-changelog --no-update “marcocesarato/php-conventional-changelog”: “^1.17” 在小皮环境没问题&#xff0c;在dockerswoole环境下报错 "scripts": {"changelog": "conventional-chang…

CentOS 7.9 安装图解

特特特别的说明 CentOS发行版已经不再适合应用于生产环境&#xff0c;客观条件不得不用的话&#xff0c;优选7.9版本&#xff0c;8.5版本次之&#xff0c;最次6.10版本&#xff08;比如说Oracle 11GR2就建议在6版本上部署&#xff09;&#xff01; 引导和开始安装 选择倒计时结…

vue3 + antd 封装动态表单组件(一)

前置条件&#xff1a; vue版本 v3.3.11 ant-design-vue版本 v4.1.1 创建动态组件配置文件config.js import { Input, Textarea, InputNumber, Select, RadioGroup, CheckboxGroup, DatePicker } from ant-design-vue;// 表单域组件类型 export const componentsMap {Text: …

Python 异源mesh裁剪融合实现与优化

Python 异源mesh裁剪融合实现与优化 一、项目需求二、解决方案1. 代码2. 结果3. 耗时 三、优化探索0. 分析1. 在体素边界处进行裁剪2. 用mesh分块进行裁剪3. 用缓冲区的思路裁剪 一、项目需求 对mesh进行裁剪&#xff0c;但发现若非mesh是致密的&#xff0c;那么裁剪边会出现锯…

JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、运行时数据区 二、Java虚拟机栈 1.栈帧的组成 2.局部变量表 3.操作数栈 4.帧数据 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理…

图片太模糊我们怎么提高清晰度呢

在数字时代&#xff0c;图片是我们日常生活中不可或缺的一部分。然而&#xff0c;有时候由于各种原因&#xff0c;我们得到的图片清晰度可能并不理想。这篇文章将介绍三款软件&#xff0c;帮助你提高图片的清晰度&#xff0c;让你的图片更加生动、清晰。 一、水印云 水印云是…

小型机故障案例

小型机故障案例 小型机往往应用于金融、电力、电信等行业&#xff0c;Unix操作系统和专用服务器RAS特性、纵向扩展性和高并发访问下的出色处理能力**&#xff0c;如HP RX6600**本文章记录在机房直连服务器进行故障原因排查及解决过程 故障现象 HP RX6600小型机关机后&#xff…

uniapp 微信小程序 内嵌H5网页办法

uniapp 微信小程序 内嵌H5网页办法 如图所示 1.新建webView页面 <template><web-view v-ifhttpUrl :srchttpUrl></web-view> </template><script>export default {data() {return {httpUrl: "",};},onLoad(options) {options.http…

脏牛漏洞(CVE-2016-5195)复现过程(详细完整版)

1、实验环境 KaLi 攻击机 Linux靶机 靶场 实验目的&#xff1a; 掌握漏洞利用的方法 掌握脏牛漏洞的原理 提高对内核安全性的认识 2、靶场搭建 VMware导入靶场 靶场地址&#xff1a;链接&#xff1a;百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。…

Pypputeer自动化

Pyppeteer简介 pyppeteer 是 Python 语言的一个库&#xff0c;它是对 Puppeteer 的一个非官方端口&#xff0c;Puppeteer 是一个 Node 库&#xff0c;Puppeteer是Google基于Node.js开发的一个工具&#xff0c;它提供了一种高层次的 API 来通过 DevTools 协议控制 Chrome 或 Ch…

分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测

分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测 目录 分类预测 | Matlab实现ISSA-SVM基于多策略混合改进的麻雀搜索算法优化支持向量机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于多策略混合改进的麻…

docker报错 missing signature key 无法拉去镜像,yum install docker-ce没有可用软件包 解决办法

错误场景描述 今天项目需要用到minio&#xff0c;我打算在虚拟机中使用docker装一个&#xff0c;可是发现当我docker pull minio/minio的时候&#xff0c;报错了missing signature key 这个报错提示的让人很蒙&#xff0c;翻译过来的意思是 “缺少签名密钥” &#xff1f;&am…

用 Python 制作可视化 GUI 界面,一键实现自动分类管理文件!

经常杂乱无章的文件夹会让我们找不到所想要的文件&#xff0c;因此小编特意制作了一个可视化GUI界面&#xff0c;通过输入路径一键点击实现文件分门别类的归档。 不同的文件后缀归类为不同的类别 我们先罗列一下大致有几类文件&#xff0c;根据文件的后缀来设定&#xff0c;大…

GaussDB与openGauss有什么相同和不同?

众所周知&#xff0c;GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务&#xff0c;openGauss是开源数据库&#xff0c;两者之间又是什么样的关系&#xff0c;有什么相同和不同&#xff0c;让我…

如何使用Portainer部署web站点并实现无公网ip远程访问

文章目录 前言1. 安装Portainer1.1 访问Portainer Web界面 2. 使用Portainer创建Nginx容器3. 将Web静态站点实现公网访问4. 配置Web站点公网访问地址4.1公网访问Web站点 5. 固定Web静态站点公网地址6. 固定公网地址访问Web静态站点 前言 Portainer是一个开源的Docker轻量级可视…