热门标签 | 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



推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
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社区 版权所有