欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python小功能函数仓库【不定时更新】

程序员文章站 2022-09-14 14:03:16
目 录时间格式化格式化日期函数文件文件基本信息获取信息格式化大小系统网络时间格式化格式化日期函数def formatTime(longtime): # 2020-07-05 14:13:48 """ 格式化日期时间 :param longtime: 要格式化的时间 :return: 格式化的时间 """ import time return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(l...

=================================================================================

时间

格式化

格式化日期函数

def formatTime(longtime):  # 2020-07-05 14:13:48
    """
    格式化日期时间
    :param longtime: 要格式化的时间
    :return: 格式化的时间
    """
    import time
    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(longtime))

=================================================================================

文件

文件基本信息

获取信息

import os
def getFileinfo():
    with open('fileinfo.txt','w',encoding='utf-8') as f:  # 在测试前创建一个文件,可以省略
        f.write('这是一个用于测试获取文件基本信息的文件!')

    fileinfo = os.stat('fileinfo.txt')

    print('文件完整路径:', os.path.abspath('fileinfo.txt'))
    print('索引名:', fileinfo.st_ino)
    print('设备号:', fileinfo.st_dev)
    print('文件大小:', formatByte(fileinfo.st_size))
    print('最后一次访问时间:', formatTime(fileinfo.st_atime))
    print('最后一次修改时间:', formatTime(fileinfo.st_mtime))
    print('最后一次状态变化时间:', formatTime(fileinfo.st_ctime))

格式化大小

def formatByte(number):
    """
    格式化文件大小
    :param number:要格式化的字节数
    :return:
    """
    for (scale, label) in [(1024*1024*1024, 'GB'),(1024*1024, 'MB'),(1024,'KB')]:
        if number >= scale:  # 如果文件大小大于或等于1KB
            return "%.2f %s" % (number*1.0/scale, label)
        elif number == 1:   # 如果文件大小为1KB
            return "1 字节"
        else:               # 处理小于1KB的情况
            byte = '%.2f' % (number or 0)
        # 去掉结尾的.00,并且加上单位“字节”
        return (byte[:-3] if byte.endswith('.00') else byte) + "字节"

=================================================================================

系统

=================================================================================

网络

=================================================================================

数据库

MySQL

连接数据库

import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect("localhost","root","root","Mydatabase")

创建数据表

import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect("localhost","root","root","Mydatabase")
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 执行SQL,如果表存在,则删除
cursor.execute("DROP TABLE IF EXISTS books")
# 使用预处理语句创建表
sql = """
create table books(
    id int(8) not null auto_increment,
    name varchar(50) not null,
    primary key(id)
)engine=MyISAM auto_increment=1 default charset=utf8;
"""
# 执行sql命令
cursor.execute(sql)
# 关闭数据库连接
db.close()

批量增加多条数据

import pymysql

# 打开数据库连接,参数1:主机名或IP;参数2:用户名;参数3:密码;参数4:数据库名称
db = pymysql.connect("localhost","root","root","Mydatabase")
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 数据列表
data = [
    ("零基础学pyhton",'Python','79.8'),
    ("PHP从入门到精通",'PHP','75.6'),
    ("零基础学JAVA",'Java','69.8'),

]
# 使用预处理语句
sql = "insert into books(name, category, price) values (%s, %s, %s)" % data
# 执行sql命令
cursor.executemany(sql)
# 提交数据
db.commit()
# 关闭数据库连接
db.close()

SQLite

创建数据库和user表

import sqlite3
# 连接到SQLite数据库
# 数据库文件是sqlite.db,若不存在则自动创建
conn = sqlite3.connect('sqlite.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,创建user表
cursor.execute('create table user (id int(10) primary key,name varchar(20))')
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

增加数据

import sqlite3
# 连接SQLite数据库
# 数据库文件是sqlite.db;如果不存在,自动创建
conn = sqlite3.connect('sqlite.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,插入记录
cursor.execute('insert into user (id, name) values ("1", "MRSOFT")')
cursor.execute('insert into user (id, name) values ("2", "Andy")')
cursor.execute('insert into user (id, name) values ("3", "小助手")')
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭连接
conn.close()

查看数据

import sqlite3
# 连接SQLite数据库
# 数据库文件是sqlite.db;如果不存在,自动创建
conn = sqlite3.connect('sqlite.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,查询所有数据
cursor.execute('select * from user')
# 获取查询结果
# result1 = cursor.fetchone()
# print(result1)                    # (1, 'MRSOFT')
# result2 = cursor.fetchmany(2)
# print(result2)                    # [(1, 'MRSOFT'), (2, 'Andy')]
result3 = cursor.fetchall()
print(result3)                      # [(1, 'MRSOFT'), (2, 'Andy'), (3, '小助手')]
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

删除数据

import sqlite3
# 连接SQLite数据库
# 数据库文件是sqlite.db;如果不存在,自动创建
conn = sqlite3.connect('sqlite.db')
# 创建一个Cursor
cursor = conn.cursor()
# 执行一条SQL语句,删除一条记录
cursor.execute('delete from USER where id=?',(1,))
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭连接
conn.close()

=================================================================================

GUI

wxPython

登陆界面

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, title='创建TextCtrl类')
        # 创建面板
        panel = wx.Panel(self)
        # 创建文本和密码输入框,左对齐
        self.title = wx.StaticText(panel, label='请输入用户名和密码')
        self.label_user = wx.StaticText(panel, label='用户名')
        self.text_user = wx.TextCtrl(panel, style=wx.TE_LEFT)
        self.label_pwd = wx.StaticText(panel, label='密   码')
        self.text_pwd = wx.TextCtrl(panel, style=wx.TE_PASSWORD)
        # 创建确定和取消按钮,并绑定事件
        self.bt_confirm = wx.Button(panel, label='确定')
        self.bt_confirm.Bind(wx.EVT_BUTTON, self.onClickSubmit)
        self.bt_cancel = wx.Button(panel, label='取消')
        self.bt_cancel.Bind(wx.EVT_BUTTON, self.onClickCancel)
        # 添加容器,容器中控件横向排列
        hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_user.Add(self.label_user, proportion=0, flag=wx.ALL, border=5)
        hsizer_user.Add(self.text_user, proportion=1, flag=wx.ALL, border=5)
        hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_pwd.Add(self.label_pwd, proportion=0, flag=wx.ALL, border=5)
        hsizer_pwd.Add(self.text_pwd, proportion=1, flag=wx.ALL, border=5)
        hsizer_btn = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_btn.Add(self.bt_confirm, proportion=0, flag=wx.ALIGN_CENTER, border=5)
        hsizer_btn.Add(self.bt_cancel, proportion=0, flag=wx.ALIGN_CENTER, border=5)
        # 添加容器,容器中控件纵向排列
        vsier_all = wx.BoxSizer(wx.VERTICAL)
        vsier_all.Add(self.title, proportion=0, flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER, border=15)
        vsier_all.Add(hsizer_user, proportion=0, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=45)
        vsier_all.Add(hsizer_pwd, proportion=0, flag=wx.EXPAND|wx.LEFT|wx.RIGHT, border=45)
        vsier_all.Add(hsizer_btn, proportion=0, flag=wx.CENTER|wx.TOP, border=15)
        panel.SetSizer(vsier_all)


    def onClickSubmit(self, event):
        """单击确定按钮触发登陆事件,并给出反馈"""
        message = ''
        username = self.text_user.GetValue()
        password = self.text_pwd.GetValue()
        if username == '' or password == '':
            message = '用户名或密码不能为空!'
        elif username == 'mr' and password == 'mrsoft':
            message = '登陆成功!'
        else:
            message = '用户名和密码不匹配!'
        wx.MessageBox(message)

    def onClickCancel(self, event):
        """点击取消按钮触发清空操作"""
        self.text_user.SetValue('')
        self.text_pwd.SetValue('')

if __name__ == '__main__':
    app = wx.App()
    myframe = MyFrame(parent=None, id=-1)
    myframe.Show()
    app.MainLoop()

=================================================================================

本文地址:https://blog.csdn.net/weixin_42324313/article/details/107138534