侧边栏壁纸
博主头像
可乐呢o3o博主等级

少些比较,多些谦虚。

  • 累计撰写 53 篇文章
  • 累计创建 67 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

代码库

liuker
2023-06-13 / 0 评论 / 0 点赞 / 58 阅读 / 8948 字

1. 生成N位数字随机验证码

import random
import string


def num_code(length=6):
    """
    生成长度为length的数字随机验证码
    :param length: 验证码长度
    :return: 验证码
    """
    return ''.join(random.choice(string.digits) for i in range(0, length))


if __name__ == '__main__':
    print(num_code(6))

2.生成唯一token

import uuid
import hashlib


def only_token():
    """
    使用md5加密uuid生成唯一的32位token
    :return: 加密后的字符串
    """
    md5 = hashlib.md5()  # 使用MD5加密模式
    md5.update(str(uuid.uuid1()).encode('utf-8'))
    return md5.hexdigest()


if __name__ == '__main__':
    print(only_token())
    print(only_token())

3. 删除指定格式的文件

import os
import re

def remove_specified_format_file(file_dir, format_name):
    """
    删除指定格式的文件
    :param file_dir: 文件根目录
    :param format_name: 格式
    :return:
    """
    for root, dirs, files in os.walk(file_dir):
        # print(root) #当前目录路径
        # print(dirs) #当前路径下所有子目录
        # print(files) #当前路径下所有非目录子文件
        for file in files:
            if re.match(format_name, file):
                print(os.path.join(root, file))
                os.remove(os.path.join(root, file))

4.进度条

from tqdm import tqdm

text = ""

with tqdm(total=100, desc='Example', leave=True, ncols=100, unit='B', unit_scale=True) as pbar:
    if text == "":
        pbar.update(2)
        text = "1"
    if text == "1":
        pbar.update(50)
        text = "2"

5.python实现字符串转字典

import ast
import json

target_str = '{"h": 1, "e": 2, "l": 3, "l": 4, "o": 5}'
target_str2 = "{'h': 1, 'e': 2, 'l': 3, 'l': 4, 'o': 5}"

# 方式1:使用json,缺点,字符串中不能出现单引号
# 由于 json 语法规定 数组或对象之中的字符串必须使用双引号,不能使用单引号
# 官网https://www.json.org/json-en.html上有一段描述是
# A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes
print(json.loads(target_str))
# print(json.loads(target_str2))   # 使用json转这个字符串会报错 Expecting property name enclosed in double quotes

# 方式2:使用eval函数,缺点,不安全
print(eval(target_str))
print(eval(target_str2))
# print(eval("__import__('os').system('dir')"))  # 会列出当前的目录文件,如果字符串是一些删除命令,则可以把整个目录清空!

# 方式3,使用ast.literal_eval,没有json与eval的缺点,推荐使用这个
print(ast.literal_eval(target_str))
print(ast.literal_eval(target_str2))

6.python控制台输出带颜色的文字方法

"""
格式:  设置颜色开始 :\033[显示方式;前景色;背景色m
说明:
前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色
显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见
 
例子:
\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->
"""
print('紫红字体 \033[1;35m hello world \033[0m!')
print('褐色背景绿色字体 \033[1;32;43m hello world \033[0m!')
print('\033[1;33;44mhello world\033[0m')

image.png

7.有序字典

import collections

d1 = collections.OrderedDict()  # 创建一个有序字典
d1['a'] = 'A'
d1['c'] = 'C'
d1['b'] = 'B'
d1['d'] = 'D'
for k, v in d1.items():
    print(k, v)

8.根据年月获取当月天数

def get_month_days(year, month):
    """
    根据年份,月份信息显示此月份天数
    :param year: 年份:
    :param month: 月份(1~12):
    :return: 当月天数
    """
    if month > 12 or month <= 0:
        return -1
    if month == 2:
        return 29 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 else 28

    if month in (4, 6, 9, 11):
        return 30
    else:
        return 31


if __name__ == '__main__':
    a = '2020-04'.split('-')
    year = int(a[0])
    month = int(a[1])
    print(get_month_days(year, month))

9. 获取当前时间月份的首日与最后一天

import calendar

def get_month_start_and_end(date=datetime.datetime.now()):
    """
    获取当前时间的月份首日与最后一天
    :param date:
    :return: (首日,最后一天)
    """
    year, month = str(date).split('-')[0], str(date).split('-')[1]
    end = calendar.monthrange(int(year), int(month))[1]
    return f'{year}-{month}-01', f'{year}-{month}-{end}'


10.把时间字符串转换成刚刚、1天前、3个月前、1年前

import datetime
import time


def date_interval(date_str):
    """
    获取时间间隔
    1分钟前,2分钟前,10分钟前,1小时前,2小时前,1天前,2天前,3天前,1个月前,3个月前,1年前,3年前
    :param date_str: 时间字符串
    :return: 字符串
    """
    date_str = time.strptime(date_str, '%Y-%m-%d %H:%M:%S')
    # 将时间元组转换为时间戳
    t = time.mktime(date_str)

    # 当前时间
    seconds = time.time() - t

    years = int(seconds // (60 * 60 * 24 * 365))
    if years:
        return '{}年前'.format(years)
    months = int(seconds // (60 * 60 * 24 * 30))
    if months:
        return '{}月前'.format(months)
    days = int(seconds // (60 * 60 * 24))
    if days:
        return '{}天前'.format(days)
    hours = int(seconds // (60 * 60))
    if hours:
        return '{}小时前'.format(hours)
    minutes = int(seconds // (60))
    if minutes:
        return '{}分钟前'.format(minutes)
    return '刚刚'


if __name__ == '__main__':
    date1 = '2019-07-10 15:27:51'
    date2 = '2021-07-10 15:27:51'
    date3 = '2021-08-10 15:27:51'
    date4 = '2021-08-12 11:01:51'
    date5 = datetime.datetime.now() + datetime.timedelta(seconds=-3)
    date5 = date5.strftime('%Y-%m-%d %H:%M:%S')
    print(date_interval(date1))
    print(date_interval(date2))
    print(date_interval(date3))
    print(date_interval(date4))
    print(date_interval(date5))

11.获取电脑磁盘、CPU、内存使用情况

import psutil
#  pip install psutil

# 获取本机磁盘使用率和剩余空间G信息
def get_disk_info():
    # 循环磁盘分区
    content = ""
    for disk in psutil.disk_partitions():
        # 读写方式 光盘 or 有效磁盘类型
        if 'cdrom' in disk.opts or disk.fstype == '':
            continue
        disk_name_arr = disk.device.split(':')
        disk_name = disk_name_arr[0]
        disk_info = psutil.disk_usage(disk.device)
        # 磁盘剩余空间,单位G
        free_disk_size = disk_info.free // 1024 // 1024 // 1024
        # 当前磁盘使用率和剩余空间G信息
        info = "{}盘使用率:{}%%, 剩余空间:{}G ".format(disk_name, str(disk_info.percent), free_disk_size)
        # 拼接多个磁盘的信息
        print(info, end="\n")
# cpu信息
def get_cpu_info():
    cpu_percent = psutil.cpu_percent(interval=1)
    cpu_info = "CPU使用率:%i%%" % cpu_percent
    print(cpu_info)
# 内存信息
def get_memory_info():
    virtual_memory = psutil.virtual_memory()
    used_memory = virtual_memory.used / 1024 / 1024 / 1024
    free_memory = virtual_memory.free / 1024 / 1024 / 1024
    memory_percent = virtual_memory.percent
    memory_info = "内存使用:%0.2fG,使用率%0.1f%%,剩余内存:%0.2fG" % (used_memory, memory_percent, free_memory)
    print(memory_info)


if __name__ == '__main__':
    get_disk_info()
    get_cpu_info()
    get_memory_info()

12.列表相同元素分类、分组

import itertools

data = [1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 1, 'a', 'a']
a =[list(group) for key, group in itertools.groupby(data)]
print(a)

13.docker占用硬盘太多

docker system prune -a
0

评论区