python常用的自动化小脚本

597 篇文章 29 订阅
326 篇文章 12 订阅

list转json、string转json

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

List转JSON``假设我们有一个列表(List):``my_list = ['apple', 'banana', 'cherry']``   ``我们可以使用json.dumps()函数将该列表转换成JSON格式:``import json``json_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 json``json_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:00``string_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日以来的秒数。

读取文件地址

在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 barcode``from 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`列表解析中使用了条件判断,只有当`x`在`list2`中才会被添加到结果中;`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_str1`和`json_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 os``import 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()函数,该函数接收文件路径、文件大小限制和清除文件的时间间隔三个参数。通过循环,不断获取文件大小并判断文件大小是否超过限制,如果超过限制,则清除文件,否则等待一定时间间隔后再进行下一次清除。

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

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值