首页 > 编程语言 >python的几种常用用法(掌握)

python的几种常用用法(掌握)

时间:2023-08-22 11:24:28浏览次数:48  
标签:文件 示例 python JSON 几种 json 使用 print 用法

Python常用的自动化小脚本,必须收藏!

原创 鬼仔 码农鬼仔 2023-08-19 18:00 发表于广东

前言

大家好,我是鬼仔。

今天给大家分享几个python常用的自动化小脚本。无论是日常生活,还是工作开发,这几个脚本都常常会用到!

  1. 1. List转JSON、String转JSON

  2. 2. 时间格式转换

  3. 3. 读取文件地址

  4. 4. 二维码图片生成

  5. 5. 条形码图片生成

  6. 6. list数据对比

  7. 7. json数据对比

  8. 8. 文件到达1M后,按照时间清除文件

一、List转JSON、String转JSON

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

import json

# 列表
my_list = ['Apple', 'Banana', 'Cherry']
# 将列表转换为JSON格式
json_data = json.dumps(my_list)
print(json_data)  # 输出结果:["Apple", "Banana", "Cherry"]

# 字符串
my_string = '{"name": "Jane", "age": 28, "city": "Los Angeles"}'
# 将字符串转换为JSON格式
json_data = json.loads(my_string)
print(json_data)  # 输出结果:{'name': 'Jane', 'age': 28, 'city': 'Los Angeles'}

二、时间格式转换

Python提供了datetime模块,可以用来进行时间格式转换。以下是一些示例:

from datetime import datetime

# 示例1: 将字符串转换为时间对象
# 字符串格式:2022-08-10 14:30:00
string_time = '2022-08-10 14:30:00'
# 将字符串转换为时间对象
time_obj = datetime.strptime(string_time, '%Y-%m-%d %H:%M:%S')
# 输出时间对象
print("示例1结果:", time_obj)  # 输出结果:2022-08-10 14:30:00

# 示例2: 将时间对象转换为字符串
# 时间对象
time_obj = datetime.now()
# 将时间对象转换为字符串
string_time = time_obj.strftime('%Y-%m-%d %H:%M')
# 输出字符串时间
print("示例2结果:", string_time)  # 输出结果:(当前时间,格式:2023-04-21 16:52)

# 示例3: 时间戳与时间对象的转换
# 时间戳
timestamp = 1660301400
# 将时间戳转换为时间对象
time_obj = datetime.fromtimestamp(timestamp)
# 输出时间对象
print("示例3结果(时间戳转时间对象):", time_obj)  # 输出结果:2022-08-11 14:30:00
# 将时间对象转换为时间戳
timestamp = int(time_obj.timestamp())
# 输出时间戳
print("示例3结果(时间对象转时间戳):", timestamp)  # 输出结果:1660301400

# 示例4: 计算时间差
# 时间对象1
time_obj1 = datetime.strptime('2022-08-10 14:30:00', '%Y-%m-%d %H:%M:%S')
# 时间对象2
time_obj2 = datetime.strptime('2022-08-15 14:30:00', '%Y-%m-%d %H:%M:%S')
# 计算时间差
time_difference = time_obj2 - time_obj1
# 输出时间差
print("示例4结果:", time_difference)  # 输出结果:5 days, 0:00:00

三、读取文件地址

当使用Python编程时,可以使用open()函数打开文件并读取其中的内容。在使用open()函数时,需要指定文件路径和文件打开模式。文件路径可以是相对路径或绝对路径。以下是一些示例代码:

读取当前目录下的文件

如果当前目录下存在名为example.txt的文件,那么可以使用以下代码读取文件内容:

with open('example.txt', 'r') as f:
    file_content = f.read()

在这段代码中,我们使用open()函数打开了example.txt文件,并将其赋值给变量f'r'参数表示以只读模式打开文件。使用with语句可以确保文件在使用完毕后被正确地关闭。我们使用f.read()方法读取文件内容,并将其赋值给变量file_content

读取其他目录下的文件

如果要读取/home/user/Documents/example.txt文件的内容,可以使用以下代码:

import os

file_path = '/home/user/Documents/example.txt'

with open(os.path.abspath(file_path), 'r') as f:
    content = f.read()
    print(content)

在这个示例中,我们使用了os.path.abspath()函数来获取文件的绝对路径。这可以确保我们使用的是正确的文件路径格式。然后,我们使用with语句打开文件并读取其中的内容,并将其赋值给变量content。最后,我们使用print()函数输出文件内容。

需要注意的是,在不同的操作系统中,文件路径的格式可能不同。在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')

在这个示例中,我们首先使用qrcode.QRCode()函数创建了一个二维码对象qr,并设置了版本、纠错级别、方块大小和边框大小。然后,我们设置了要生成的字符串data,并将其添加到二维码对象中。接着,我们调用qr.make()方法编译二维码对象。最后,我们调用qr.make_image()方法生成二维码图片,并将其保存为qrcode.png文件。

需要注意的是,生成二维码图片时需要安装qrcode库。可以使用pip命令来安装:pip install qrcode。安装完成后即可使用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条形码对象ean,并指定了条形码类型和要生成的字符串。接着,我们调用ean.save()方法将条形码图片保存为barcode.png文件。

barcode库支持多种条形码类型,如EAN13、EAN8、Code39等等。可以根据需求选择不同的类型来生成不同类型的条形码图片。同时,barcode库还提供了许多选项供调整条形码图片的大小、颜色等等。

需要注意的是,生成条形码图片时需要安装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库提供了许多选项供调整生成的身份证号码的性别、出生日期等信息。需要根据实际需求进行调整。

需要注意的是,id-validator库需要安装才能使用。可以使用pip命令来安装:pip install id-validator

七、list数据对比

在Python中,可以使用set集合或列表解析来对比两个列表之间的差异或相同元素。以下是一个示例代码:

使用set集合

list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]

# 求交集
intersection = list(set(list1) & set(list2))
print(intersection)

# 求并集
union = list(set(list1) | set(list2))
print(union)

# 求差集
difference = list(set(list1) - set(list2))
print(difference)

在这个示例中,我们首先将两个列表转换成set集合,然后可以使用&运算符求交集、|运算符求并集和-运算符求差集。最后,将集合转换成列表进行打印。

使用列表解析

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中才会被添加到结果中。

以上两种方法都可以对比两个列表之间的差异或相同元素,可以根据具体需求选择使用哪种方法。需要注意的是,如果列表中有重复元素,使用set集合可能会导致元素丢失。

八、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(f"{key}不相同:{data1[key]} {data2[key]}")
    else:
        print(f"{key}在第二个JSON数据中不存在")
for key in data2:
    if key not in data1:
        print(f"{key}在第一个JSON数据中不存在")

在这个示例中,我们首先定义了两个JSON数据字符串json_str1json_str2。然后使用json.loads()函数将JSON数据转换为Python对象。最后对比两个Python对象中的差异或相同元素,打印出不相同或不存在的键值对。

需要注意的是,对比JSON数据时需要注意JSON数据的格式是否正确,否则可能会导致JSON数据解析失败,无法转换成Python对象。同时,如果JSON数据中有嵌套的结构,需要使用递归算法进行对比。

九、批量获取类方法

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

import inspect

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 = inspect.getmembers(MyClass, predicate=inspect.ismethod)

# 打印方法名、参数信息和返回值信息
for name, method in methods:
    print(f"方法名:{name}")
    print(f"参数信息:{inspect.signature(method)}")
    print(f"返回值信息:{inspect.getfullargspec(method)}")

在这个示例中,我们首先定义了一个MyClass类,其中包含了实例方法、类方法和静态方法。使用inspect.getmembers()函数获取MyClass类的所有方法,并使用inspect.ismethod函数判断是否为方法。然后使用inspect.signature()函数获取方法的参数信息,使用inspect.getfullargspec()函数获取方法的返回值信息。最后遍历方法列表并打印每个方法的名字、参数信息和返回值信息。

需要注意的是,如果方法中有默认参数、可变长参数或关键字参数,需要对获取到的参数信息进行解析。同时,获取返回值信息时需要注意返回值类型和返回值注释的区别。

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

可以使用Python中的os和time模块来实现当文件大小超过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:
        try:
            # 获取文件大小
            file_size = os.path.getsize(file_path)

            # 如果文件大小超过限制,则清除文件
            if file_size > limit_size:
                os.remove(file_path)
                print(f"文件已清除,文件路径:{file_path}")
            else:
                print(f"文件大小未超过限制,文件路径:{file_path}")

            # 等待一定时间间隔后再进行下一次清除
            time.sleep(clear_interval)
        except Exception as e:
            print(f"清除文件时发生异常:{e}")
            break

# 示例用法
clear_file("test.txt", limit_size=1024*1024, clear_interval=3600)

在这个示例中,我们首先定义了一个clear_file()函数,该函数接收文件路径、文件大小限制和清除文件的时间间隔三个参数。通过循环,不断获取文件大小并判断文件大小是否超过限制,如果超过限制,则清除文件,否则等待一定时间间隔后再进行下一次清除。同时,我们使用try except语句捕获清除文件时可能会产生的异常情况,并打印异常信息。

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

图片

码农鬼仔 一线互联网算法工程师,专注分享算法知识|面试技巧|职场感悟。 41篇原创内容 公众号 阅读 2287 码农鬼仔   ​     关注后可发消息    

标签:文件,示例,python,JSON,几种,json,使用,print,用法
From: https://www.cnblogs.com/cherishthepresent/p/17648059.html

相关文章

  • js数组操作的shift unshift pop push用法
    Array.shift()shift() 方法用在数组上, 移除数组的第一个元素并返回移除的元素.该方法会改变原数组的长度.constarray1=[1,2,3];constfirstElement=array1.shift();console.log(array1);//Expectedoutput:Array[2,3]console.log(firstElement);//Expectedo......
  • python 多线程
    在python中,I/O密集型任务可以用多线程的方式来实现(threading库);然而,对于计算密集型任务,由于python中全局锁GIL的存在,多线程并不能起到一个加速的作用。所以此时,一般使用多进程的方式实现(multiprocessing库)。多线程threading:一个人有与异性聊天和看剧两件事要做。单线程的她可......
  • Lnton羚通云算力平台如何在OpenCV-Python 中,来进行图像算术运算?
    在OpenCV-Python中,可以使用函数cv2.add()、cv2.subtract()、cv2.multiply()和cv2.divide()来进行图像算术运算。这些函数接受两个输入图像,并对其进行逐像素的运算。1.图像加法:OpenCV 是饱和运算(大于255算255),NumPy 是模运算(大于255会与256进行求模)。importnumpyasnpimpo......
  • pyenv的常见用法
    pyenv是一个流行的Python版本管理工具,允许用户在同一台机器上轻松地安装和切换多个Python版本。以下是一些pyenv的常见用法:安装Python版本:pyenvinstall<version>其中<version>是你想安装的Python版本号,例如:3.8.10。列出所有可安装的Python版本:pyenvin......
  • Python中字符串截取
    #截取字符串时,如果位数不够,Python不会报错,而是返回空字符串#这是因为Python中的字符串是不可变的,所以当我们尝试访问一个不存在的索引时,Python会返回空字符串而不是报错#示例代码s='hello'print(s[10:15])#返回空字符串'' #Python中的字符串是不可变的,这意味着一旦......
  • Web_PHP_DedeCMS_{dede:sql}标签用法;
    {dede:sqlsql='selecta.title,a.litpic,z.expert,d.level,d.titles,d.resumefromdede_archivesasa,dede_addonzjtbasz,dede_addondocterasdwherea.id=z.aidandz.expert=d.nameANDa.litpicisnotnullGROUPBYa.titleLIMIT2'} <div......
  • vscode 配置 python black 格式化单行长度
    配置信息vscode版本1.81.1vscode安装BlackFormatter插件问题默认Black格式化之后单行长度太短,需要通过修改配置文件解决。方法Ctrl+Shift+p,打开settings.json,添加一个black-formatter.args配置项,如下所示:"black-formatter.args":["--line-le......
  • python 外部文件调用Django程序操作model
    importosimportdjango#设置Django配置文件文件夹所在位置,并进行系统环境配置os.environ.setdefault("DJANGO_SETTINGS_MODULE","项目配置文件夹名称.settings")#加载Django模块,初始化Django环境django.setup()#导入需要调用的modelfrom应用名称.modelsimport......
  • python 打印一个条形图?
    背景在python中,使用matplot生成图表是一个很常用的方法,但在一些轻量级需求场合,例如仅做一个打印预览,或者快速查看,这些场景下调用matplot生成图表,略显繁琐。今天介绍一个通过 DebugInfo 模块打印条形图的方法,简单实用。引入模块pipinstallDebugInfo打印销售转化数据下面的......
  • 搭建Python⾃带静态Web服务器
    说明Python自带的静态Web服务器可以通过使用http.server模块来实现。步骤打开命令行终端,进入要作为静态文件根目录的文件夹。运行以下命令启动静态Web服务器:Python2.x版本:python-mSimpleHTTPServer<port>Python3.x版本:python-mhttp.server<port> <port>是可选参......