os模块:
- os模块是和操作系统交互的模块
和文件相关的操作:
- os.remove 删除一个文件
- os.rename("old_name","new_name") 重命名文件/目录
- os.mkdir("dirname") 生成单级目录,相当于shell 中的mkdir dirname
- os.rmdir("dirname") 删除单级目录,若目录不为空则无法删除,报错;相当于shell 中 rmdir 敌人那么
- os.stat("path/filename") 获取文件/目录信息
- os.listdir("dirname") 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
- os.listdir("dirname") 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
- os.removedirs("dirname1") 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推
os.path系列:
- os.path.abspath(path) 返回path规范化的绝对路径
- os.path.split(path) 将path分割成目录和文件名二元组返回
- os.path.dirname(path) 返回path的目录,其实就是os.path.split(path) 的第一个元素
- os.path.basename(path) 返回path最后的文件名,如果path以/或结尾,那么就会返回空值.即os.path.split(path) 的第二个元素
- os.path.exists(path) 如果path存在,返回True ;如果path不存在,返回False
- os.path.isabs(path) 如果path是绝对路径,返回True
- os.path.isfile(path) 如果path是一个存在的文件就返回True,反之就是False
- os.path.isdir(path) 如果path是一个存在的目录,就返回True;反之.返回False
- os.path.join(path1[,path2,]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
- os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
- os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
- os.path.getsize(path) 返回path的大小
re模块:
- re.findall() 返回所有满足匹配条件的结果,放在列表里
- re.search() 函数会在字符串内查找模式匹配,只找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
- re.math() 同search ,不过math是在字符串开始进行匹配
- re.split() 用谁分割谁就是空
- re.sub 替换
- re.subn() 返回的是一个元祖(替换的结果,替换了多少次)
- re.compile() 将正则表达式编译成为一个正则表达式对象
- re.finditer() 返回一个存放匹配结果的迭代器
正则表达式:
元字符 | 匹配内容 |
. | 匹配除换行符以外的任意字符 |
w | 匹配字母或数字或下划线 |
s | 匹配任意的空白符字符 |
d | 匹配数字 |
匹配一个换行符 | |
匹配一个制表符 | |
匹配一个单词的结尾 | |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结尾 |
W | 匹配非字母或数字或下划线 |
D | 匹配非数字 |
S | 匹配非空白符字符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[....] | 匹配字符组中的字符 |
[^....] | 匹配除了字符组中字符的所有字符 |
量词:
量词 | 用法说明 |
* | 重复0次或者多次 |
+ | 重复一次或则多次 |
? | 重复0次或者多次 |
{n} | 重复n次 |
{n,} | 至少重复n次 |
{n,m} | 重复n次到m次 |
时间模块:
- 时间戳时间(time.time())
- 结构化时间
- 格式化时间(字符串时间) ----time.strftime('%Y/%m/%d %H:%M:%S') time.localtime() 当地时间
三种时间的转换:
random模块:
-
取随机小数:
- random.random() 默认是0--1,不用写参数
- random.uniform(n,m) 括号里面写入参数
-
取随机整数:
-
random.randint(n,m) 闭区间
-
random.randrange(n,m) 包括n,包括m
-
random.randrange(n,m,z) z ----->表示的是步长
-
-
随机抽取:
- random.choice() 一个一个抽取
- random.smaple() 可以指定数量抽取
-
打乱顺序:
- random.shuffle()
loggind模块(日志模块):
-
基础配置方式,只能完成一些简单的需求
- 却点: 不支持同时向文件个屏幕输出,操作系统的编码可能会出现乱码的问题
import logging logging.basicConfig(level=logging.DEBUG) logging.debug('debug message') # 最细节的 计算机计算的那些小过程 logging.info('info message') # 普通信息 记录每个用户的操作 logging.warning('warning message')# 警告信息 你觉得可能会影响到你程序的安全正确率的内容 logging.error('error message') # 错误信息 直接影响你程序的健康了 logging.critical('critical message') # 批判的 把整个userinfo文件删掉了
- 却点: 不支持同时向文件个屏幕输出,操作系统的编码可能会出现乱码的问题
-
对象方式,灵活性高,可扩展性大
- 高可配置
import logging # logger对象的方式 : 灵活性 可扩展性 logger = logging.getLogger() # 创建一个logger对象 logger.setLevel(logging.DEBUG) # 创建一个文件操作符 来准备操作日志向文件中写这件事 fh = logging.FileHandler('mylog.log',encoding='utf-8') fh2 = logging.FileHandler('mylog2.log',encoding='utf-8') # 创建一个屏幕操作符 来准备操作日志向屏幕中写这件事 sh = logging.StreamHandler() # 创建一个输出格式 formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 组合 # 输出格式和文件操作符屏幕操作符绑在一起 fh.setFormatter(formatter) sh.setFormatter(formatter2) sh.setLevel(logging.ERROR) # logger对象分别和文件操作符屏幕操作符绑在一起 logger.addHandler(fh) logger.addHandler(fh2) logger.addHandler(sh) # 才开始能够使用logger来记录日志 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
- 高可配置
hashlib模块(摘要模块):
- 有多种算法的模块,每一个算法都可以帮助我们完成一件事,给一个字符串惊醒计算得到一串密文结果
- 对于不同的字符串,用一个算法加密,计算的结果总是相同的
- 想要保证安全性可以进行动态加盐
模块的导入:
- import....
- from ...import....