常用模块

日志模块

# import logging

# 进行基本的日志配置

# logging.basicConfig(filename='access.log',

#                     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',

#                     datefmt='%Y-%m-%d %H:%M:%S %p',

#                     level=10,

#                     # stream=True

#                     )

# 日志级别遵循原则:自下而上进行匹配 #debug-》info-》warning-》error-》critical

# logging.debug('调试信息') #10

# logging.info('正常信息') #20

# logging.warning('不好啦着火啦') #30

# logging.error('报错信息') #40

# logging.critical('严重错误信息') #50

# 问题:

#1、没有指定日志级别

#2、没有指定日志格式

#3、只能往屏幕打印,没有写入文件

# 新问题

#1、不能指定字符串编码

#2、只能往文件中打印

import logging

# logging模块包含四种角色:logger,filter,formatter,handler

#1、logger:负责产生日志信息

logger1=logging.getLogger('交易日志')

# logger2=logging.getLogger('用户相关')

#2、filter:负责筛选日志

#3、formatter:控制日志输出格式

formatter1=logging.Formatter(

    fmt='%(asctime)s:%(name)s:%(levelname)s:%(message)s',

    datefmt='%Y-%m-%d %X'

)

formatter2=logging.Formatter(

    fmt='%(asctime)s:%(message)s',

    datefmt='%Y-%m-%d %X'

)

#4、handler:负责日志输出的目标

h1=logging.FileHandler(filename='a1.log',encoding='utf-8')

h2=logging.FileHandler(filename='a2.log',encoding='utf-8')

sm=logging.StreamHandler()

#5、绑定logger对象与handler对象

logger1.addHandler(h1)

logger1.addHandler(h2)

logger1.addHandler(sm)

#6、绑定handler对象与formatter对象

h1.setFormatter(formatter1)

h2.setFormatter(formatter1)

sm.setFormatter(formatter2)

#7、设置日志级别:可以在两个关卡进行设置logger与handler

logger1.setLevel(10)

h1.setLevel(10)

h2.setLevel(10)

sm.setLevel(10)

 时间模块

import time

# 时间分为三种格式

#1、时间戳

# start= time.time()

# time.sleep(3)

# stop= time.time()

# print(stop - start)

#2、格式化的字符串形式

# print(time.strftime('%Y-%m-%d %X'))

# print(time.strftime('%Y-%m-%d %H:%M:%S %p'))

#3、 结构化的时间/时间对象

# t1=time.localtime()

# print(t1)

# print(type(t1.tm_min))

# print(t1.tm_mday)

# t2=time.gmtime()

# print(t1)

# print(t2)

# 时间转换

# print(time.localtime(123123123))

# print(time.gmtime(123123123))

# print(time.mktime(time.localtime()))

# print(time.strftime('%Y',time.localtime()))

# print(time.strptime('2011-03-07','%Y-%d-%m'))

# print(time.asctime())

# print(time.ctime())

# print(time.strftime('%a %b %d %H:%M:%S %Y'))

# print(time.asctime(time.localtime()))

# print(time.ctime(123123123))

# print(time.strftime('%Y-%m-%d %X'))

# 获取格式化字符串形式的时间麻烦

# 时间戳与格式化时间之间的转换麻烦

# 获取之前或者未来的时间麻烦

import datetime

# print(datetime.datetime.now())

# print(datetime.datetime.fromtimestamp(1231233213))

# print(datetime.datetime.now() + datetime.timedelta(days=3))

# print(datetime.datetime.now() + datetime.timedelta(days=-3))

s=datetime.datetime.now()

print(s.replace(year=2020))

random模块

1 import random
2
3 print(random.random())#(0,1)----float 大于0且小于1之间的小数
4
5 print(random.randint(1,3)) #[1,3] 大于等于1且小于等于3之间的整数
6
7 print(random.randrange(1,3)) #[1,3) 大于等于1且小于3之间的整数
8
9 print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5]
10
11 print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合
12
13 print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716
14
15
16 item=[1,3,5,7,9]
17 random.shuffle(item) #打乱item的顺序,相当于"洗牌"
18 print(item)

生成随机验证码

import random
def make_code(n):
res=''
for i in range(n):
s1=chr(random.randint(65,90))
s2=str(random.randint(0,9))
res+=random.choice([s1,s2])
return res

print(make_code(9))

 OS模块

os模块是与操作系统交互的一个接口


os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为" ",Linux下为" "
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
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的大小


在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
>>> os.path.normcase('c:/windows\system32\')
'c:\windows\system32\'

规范化路径,如..和/
>>> os.path.normpath('c://windows\System32\../Temp/')
'c:\windows\Temp'

>>> a='/Users/jieli/test1/\a1/\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1

os路径处理
#方式一:推荐使用
import os
#具体应用
import os,sys
possible_topdir = os.path.normpath(os.path.join(
os.path.abspath(__file__),
os.pardir, #上一级
os.pardir,
os.pardir
))
sys.path.insert(0,possible_topdir)


#方式二:不推荐使用
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

原文地址:https://www.cnblogs.com/wanglecn/p/9204579.html