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



推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 一.常见基于身份识别进行反爬1通过headers字段来反爬headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫1.1通过headers中的User-A ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
    #请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ... [详细]
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社区 版权所有