pandas,random,hashlib模块以及日志

这篇博客介绍了如何使用openpyxl读取和pandas写入Excel数据,探讨了random模块的各种随机数生成功能,并展示了在实际案例中生成随机验证码。同时,讲解了hashlib加密模块,包括常见加密算法和添加干扰项以增强安全性。最后,讨论了日志模块,包括日志分类和输出方法,强调了日志在程序调试和问题追踪中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用openpyxl来读取数据

1.打开excel

wb = load_workbook(r'111.xlsx', data_only = True)

2.读取数据

使用openpyxl来读取excel数据所使用的内置方法与写入数据相对应。

(1)位置

wb1['A1'] = 'aaa'            #写入数据

print(wb1['A1'].value)       #读取数据

(2)cell

wb1.cell(row=3, column=2, value='bbb')        #写入数据

print(wb1.cell(row=3,column=2).value)         #读取数据

(3)整行读取

for j in wb1.columns:
    print([i.value for i in j])

# j按顺序读取一行,i从左到右读取j中的数值

使用pandas写入数据

由于openpyxl读写数据比较麻烦,所以可以使用更加简便的pandas模块辅助输入。

pandas模块是用封装好的内置方法使用openpyxl,所以需要安装openpyxl模块为前置模块,否则只安装pandas模块无法运行。

import pandas

d = {
    '公司名称': ['老男孩', '老女孩', '老伙计', '老伙子'],      #将数据以这样的格式封装成字典
    '公司地址': ['上海', '深圳', '杭州', '东京'],
    '公司电话': [120, 130, 129, 996],
}

df = pandas.DataFrame(d) 
df.to_excel(r'111.xlsx')  #将字典输入给表格

pandas模块会用内置方法将数据快捷封装成字典并输入至表格中,本质上是帮我们调用了各种openpyxl的内置方法,节约操作。

random随机数模块

random模块的主要功能就是生成各种不同条件的随机数。

1.random()

生成一个0到1之间的随机数

import random

print(random.random())

2.randint(a,b)

生成一个范围为a到b之间的整数

import random

print(randint(1,6))

3.choice

在列表中随机取出一个数值

import random

print(random.choice['一等奖', '二等奖', '三等奖'])

4.sample

在列表中随机取出数值,抽取数量可自定义

import random

print(random.sample(['1', '2', '3', '4', '5', '6', '7'], 3))

5.shuffle

随机打乱列表的索引值

import random

l1 = [1,2,3,4,5,6,7,8,9]
random.shuffle(l1)
# [3,5,4,9,1,2,8,6,7]

random使用案例

使用random生成一个随机验证码,要求5位字符,只能出现数字,大小写字母

import random

code = ''
for i in range(5):
    random_int = str(random.randint(0,9))         #生成一个0-9随机整数
    random_big = chr(random.randint(65,90))       #生成一个随机大写字母,由数值转换ASCII码生成
    random_small = chr(random.randint(97,122))    #生成一个随机小写字母,由数值转换ASCII码生成
    temp = random.choice([random_int,random_big,random_small])   #每次随机一种生成
    code += temp
print(code)

hashlib加密模块

加密,就是把看得懂的明文数据转换成看不懂的暗文数据。加密是为了防止信息在输入时遭到泄露,保护隐私。

加密算法有很多,同样内容用不同加密算法出来的结果也不同,但同样内容用同样算法每次加密结果均相同,一般结果越长的加密安全程度越高。

常见加密算法


md5 sha系列 hmac base64


import hashlib

md5 = hashlib.md5()  # 选择md5加密算法加密数据
md5.update(b'123')  # 往括号内添加明文数据 数据必须是bytes类型
res = md5.hexdigest()  # 获取加密之后的结果
print(res)

添加干扰项

加密时可以使用salt作为加密干扰项,减少被解密的可能性。

干扰项不会变成数据的具体内容,仅仅作为加密干扰项出现。

password = input('password>>>:').strip()
md5.update('干扰项内容'.encode('utf8'))      #干扰项设置成随机变量会变成动态干扰项,随机性更强
md5.update(password.encode('utf8'))
res = md5.hexdigest()
print(res)

subprocess模块

模拟cmd命令窗口

import subprocess

cmd = input('请输入您的指令>>>:').strip()
sub = subprocess.Popen(cmd,
                       shell=True,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE
                       )  
# stdout执行命令之后正确的返回结果
print(sub.stdout.read().decode('gbk'))
# stderr执行命令报错之后的返回结果
print(sub.stderr.read().decode('gbk'))

日志模块

日志,就是程序运行中的记录,用于记录程序运行中产生的信息、bug、错误等等。

日志分类

import logging

logging.debug('debug等级')  # 10
logging.info('info等级')  # 20
logging.warning('warning等级')  # 默认从warning级别开始记录日志  30
logging.error('error等级')  # 40
logging.critical('critical等级')  # 50

python中默认输出warning等级以上的日志,因为这些会影响到程序的运行。

程序默认运行时会自动添加日志内容并输出日志,括号内也可以自定义输出内容。

日志输出模块

日志在实际输出中不需要配置详细方法,只需要制作一个日志输出的模板,让日志按照模板自动填入数据即可。

import logging
import logging.config
# 定义日志输出格式 开始
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

# 自定义文件路径
logfile_path = 'a3.log'
# log配置字典
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
    },
    'filters': {},  # 过滤日志
    'handlers': {
        #打印到终端的日志
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': logfile_path,  # 日志文件
            'maxBytes': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        #logging.getLogger(__name__)拿到的logger配置
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
        # '购物车记录': {
        #     'handlers': ['default','console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
        #     'level': 'WARNING',
        #     'propagate': True,  # 向上(更高level的logger)传递
        # },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}

logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值