热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模块与内置模块

目录os模块hashlib模块random模块logging模块json模块    os模块   创建文件夹os.mkdir(r文件夹01)#只能创

目录

  • os模块



  • hashlib模块



  • random模块



  • logging模块



  • json模块



 

 

 

 


os模块

 

 

 


创建文件夹

os.mkdir(r'文件夹01') # 只能创建单级目录
os.makedirs(r'文件夹02\文件夹03') # 可以创建多级目
os.makedirs(r'文件夹03')

 


 删除文件夹

os.rmdir(r'文件夹01')
os.rmdir(r
'文件夹02\文件夹03') # 默认只能删一级空目录
os.removedirs(r'文件夹02\文件夹03\文件夹04') # 可以删除多级空目录

 


查看

print(os.listdir()) # 查看指定路径下所有的文件及文件夹
print(os.listdir('D:\\')) # 查看指定路径下所有的文件及文件夹
print(os.getcwd()) # 查看当前所在的路径
os.chdir(r'文件夹03') # 切换当前操作路径
print(os.getcwd()) # 查看当前所在的路径

 


判别

print(os.path.isdir(r'a.txt')) # 判断是否是文件夹
print(os.path.isdir(r'文件夹03'))
print(os.path.isfile(r'a.txt')) # 判断是否是文件
print(os.path.isfile(r'文件夹03'))
print(os.path.exists(r'a.txt')) # 判断当前路径是否存在
print(os.path.exists(r'文件夹03'))

 

 

 


路径拼接

"""
不同的操作系统路径分隔符是不一样的

windows是 \
mac是 /
"""
res = os.path.join('','')
# 该方法可以针对不同的操作系统自动切换分隔符

 

 

 


文件大小

 

 

print(os.path.getsize(r'a.txt'))

 

 

 

 

 

 


hashlib模块

加密模块
将明文数据按照一定的逻辑变成密文数据
一般情况下密文都是由数字字母随机组合而成

加密算法
将明文数据按照一定的逻辑
加密之后的密文不能反解密出明文

# 常见加密算法:md5 base64 hmac sha系列

"""算法生成的密文越长表示该算法越复杂"""

 


 举例

import hashlib
#选择加密算法:一般情况下采用md5即可md5 = hashlib.md5()
#
将待加密的数据传入算法中md5.update(b'hello')
#
获取加密之后的密文res = md5.hexdigest()print(res)

 

 

 


加盐处理

#加盐处理:在对用户真实数据加密之前再往里添加额外的干扰数据
#
选择加密算法:一般情况下采用md5即可
md5 = hashlib.md5()
#
将待加密的数据传入算法中
#
加盐md5.update('自己定制的盐'.encode('utf8'))
md5.update(b'hello') #获取加密之后的密文res = md5.hexdigest()print(res)

 

 

 


动态加盐

#动态加盐
#
选择加密算法:一般情况下采用md5即可
md5 = hashlib.md5()
#将待加密的数据传入算法中
#
加盐
md5.update('不固定 随机改变'.encode('utf8'))
md5.update(b
'hello')
#
获取加密之后的密文
res = md5.hexdigest()
print(res)

 

 

 


random模块

随机数模块
import random
# 随机返回0-1之间的小数
print(random.random())
# 随机返回指定区间的整数 包含首尾
print(random.randint(1,6)) # 掷色子
# 随机抽取一个
print(random.choices(['一等奖','二等奖','谢谢回顾'])) # 抽奖
print(random.choice(['一等奖','二等奖','谢谢回顾']))
# 随机抽取指定样本个数
print(random.sample([111, 222, 333, 444, 555, 666, 777], 2))
# 随机打乱元素
l = [2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A", "小王", "大王"]
random.shuffle(l)
# 洗牌
print(l)

 

 

 

 


搜狗笔试题

产生一个五位数随机验证码
每一位都可以是数字\小写字母\大写字母

 

 

def get_code(n):
code
= ''
for i in range(n): # 循环五次决定是几位验证码
# 每一次循环都应该是三选一
# 随机的数字
random_int = str(random.randint(0, 9))
# 随机的小写字母
random_lower = chr(random.randint(97, 122))
# 随机的大写字母
random_upper = chr(random.randint(65, 90))
# 随机选择一个作为一位验证码
temp = random.choice([random_int, random_lower, random_upper])
code
+= temp
return code
print(get_code(4))

View Code

 

 


logging模块

import logging
# 日志级别
logging.debug('debug message')
logging.info(
'info message')
logging.warning(
'warning message')
logging.error(
'error message')
logging.critical(
'critical message')

 

 

 


模块使用案例

# import logging
#
#
file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8',)
#
logging.basicConfig(
#
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
#
datefmt='%Y-%m-%d %H:%M:%S %p',
#
handlers=[file_handler,],
#
level=logging.ERROR
#
)
#
#
logging.error('你好')

View Code

 

# import time
#
import logging
#
from logging import handlers
#
#
sh = logging.StreamHandler()
#
rh = handlers.RotatingFileHandler('myapp.log', maxBytes=1024,backupCount=5)
#
fh = handlers.TimedRotatingFileHandler(filename='x2.log', when='s', interval=5, encoding='utf-8')
#
logging.basicConfig(
#
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
#
datefmt='%Y-%m-%d %H:%M:%S %p',
#
handlers=[fh,sh,rh],
#
level=logging.ERROR
#
)
#
#
for i in range(1,100000):
#
time.sleep(1)
#
logging.error('KeyboardInterrupt error %s'%str(i))

View Code

 

import logging
logger
= logging.getLogger()
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log',encoding='utf-8')
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
formatter
= logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
#logger对象可以添加多个fh和ch对象
logger.addHandler(ch)
logger.debug(
'logger debug message')
logger.info(
'logger info message')
logger.warning(
'logger warning message')
logger.error(
'logger error message')
logger.critical(
'logger critical message')

View Code

 

 


json模块

d = {'username': 'tom', 'pwd': 123}
import json
#简单的理解:可以将其他数据类型转换成字符串也可以将字符串转换成其他数据类型

 

 


 序列化

将其他数据类型转换成json格式的字符串
eg:
res = json.dumps(d)print(res, type(res)) # {"username": "tom", "pwd": 123} d1 = {"username": "tom", "pwd": 123}print(d1)
# 只有json格式字符串才会是双引号 双引号就是判断json格式字符串的重要依据

 

 

 

 


反序列化

 

 

将json格式字符串转换成对应的数据类型
eg:

d = {'username': 'tom', 'pwd': 123}
import json
res = json.dumps(d)
print(res, type(res))
res1 = json.loads(res)
print(res1, type(res1))

 

 

 


文件序列化和反序列化

# with open(r'a.txt','w',encoding='utf8') as f:
# 文件序列化
# json.dump(d,f)
# with open(r'a.txt','r',encoding='utf8') as f:
# 文件反序列化
# res = json.load(f)
# print(res,type(res))

View Code

 

 

 

 

 


json模块的其他作用

json模块主要是为了跨系统传输数据使用
但是并不是所有的python数据都可以转json格式字符串
在导入json模块后
输入json.encoder
按住CTRL,点击encoder就可以查看相关设定

 

 

 


原文链接:https://www.cnblogs.com/gh2805/p/15166584.html



推荐阅读
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 使用Python代码高效生成大规模随机数据集(千万级) ... [详细]
  • thinkphp5.0 验证码的使用
    对应手册:点击查询如果不使用默认的规则,想自定义配置一下呢就新增个配置项:默认是5位数,带混淆线条,这里增加个配置项修改一下 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • Python 开发笔记:深入探讨字符串及其常用方法与技巧 ... [详细]
  • 并发编程入门:初探多任务处理技术
    并发编程入门:探索多任务处理技术并发编程是指在单个处理器上高效地管理多个任务的执行过程。其核心在于通过合理分配和协调任务,提高系统的整体性能。主要应用场景包括:1) 将复杂任务分解为多个子任务,并分配给不同的线程,实现并行处理;2) 通过同步机制确保线程间协调一致,避免资源竞争和数据不一致问题。此外,理解并发编程还涉及锁机制、线程池和异步编程等关键技术。 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 本章节在上一章的基础上,深入探讨了如何通过引入机器人实现自动聊天、表情包回应以及Adidas官方账号的自动抽签功能。具体介绍了使用wxpy库进行微信机器人的开发,优化了智能回复系统的性能和用户体验。通过详细的代码示例和实践操作,展示了如何实现这些高级功能,进一步提升了机器人的智能化水平。 ... [详细]
  • 在Python编程语言中,字符串被视为不可变的Unicode字符序列。本文将详细介绍四种用于获取字符串长度的方法,并提供相应的代码示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • 如何选择优质U盘品牌:专业推荐与选购指南
    如何选择优质U盘品牌:专业推荐与选购指南 ... [详细]
  • 本文总结了 Apache Shiro 安全框架的学习体会,并通过具体应用实例进行了详细分析。Apache Shiro 是一个强大且灵活的安全框架,适用于各种应用程序的安全需求。通过对该框架的核心功能和使用方法的深入探讨,本文不仅帮助读者理解其基本概念和架构设计,还提供了实际项目中的应用示例,以便更好地掌握和运用这一工具。特别感谢开涛的博客文章,为本文提供了宝贵的参考和启发。 ... [详细]
author-avatar
mobiledu2502876733
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有