python常用的模块---random模块、os模块、math模块、datetime模块、logging模块

1、random 模块

random.random()  ,返回>=0.0&<1.0的随机浮点数

random.randrange(step) ,返回>=0&<step,步长为1的随机整数

random.randrange(start,step[,step])返回>=start&<step,步长为step的随机整数

random.randint(a,b)返回>=a&<=b之间的随机整数

import random
for i in range(0,3):
    x=random.random() #大于等于0.0小于1.0
    print("x的值:",x)


for i in range(0,3):
    y=random.randrange(5)#大于0小于5
    print("y的值:",y)


for i in range(0,3):
    z=random.randrange(5,10) #包括5不包括10
    print("z的值:",z)

for i in range(0,3):
    w=random.randint(5,10)  #包括5,10
    print("w的值:",w)

运行结果:

x的值: 0.6571710502811471
x的值: 0.37297062793875524
x的值: 0.24956516375229454
y的值: 0
y的值: 2
y的值: 2
z的值: 9
z的值: 7
z的值: 7
w的值: 10
w的值: 5
w的值: 8

第二次运行结果:

x的值: 0.4512323198927247
x的值: 0.1508498014315055
x的值: 0.9328511196078411
y的值: 4
y的值: 1
y的值: 1
z的值: 6
z的值: 7
z的值: 9
w的值: 9
w的值: 8
w的值: 6

2、os模块

(1)os模块提供了使用操作系统功能的一些函数

os.rename(src,dst) 修改文件名,scr是源文件,dst是目标文件,它们可以是绝对路径也可以是相对路径

os.remove(path)删除path所指的文件,如果Path是目录,会报错OSError

os.mkdir(path)创建path所指的目录,如果目录已存在,会报错FileExistsError

os.rmdir(path)删除path所指的目录,如果目录非空,会报错OSError

os.walk(top)遍历top所指的目录树,自顶向下遍历目录树,返回值是一个三元组(目录路径,目录名列表,文件名列表)

os.listdir(dir)列出指定目录中的文件和子目录

常用属性:

os.curdir,获取当前目录

os.pardir,获取当前父目录

import os
fname='textfile.txt'
with open(fname,'r',encoding='utf-8') as f:  #读写文件指定字符集很重要
    b=f.read()
    print(b)
    copy_f_name='copy.txt'
    with open(copy_f_name,'w',encoding='utf-8') as co:
        co.writelines(b)
        print('复制文件成功')
try:
    os.rename(copy_f_name,'copy2.txt')
except OSError:
    os.remove('copy2.txt')
print("当前目录",os.listdir(os.curdir))
print("父目录",os.listdir(os.pardir))

try:
    os.mkdir('subdir')
except OSError:
    os.rmdir('subdir')

for item in os.walk('.'):
    print("top所指的目录树",item)

运行结果:

hello大家好
复制文件成功
当前目录 ['abnormal.py', 'abs01.py', 'abs02.py', 'baidu.py', 'baidujs.py', 'cainiao01.py', 'class01.py', 'class02.py', 'class_demo.py', 'class_test.py', 'class_test1.py', 'copy2.txt', 'decorator001.py', 'decorator02.py', 'fileop.py', 'imp.py', 'input_demo.py', 'login126.py', 'math_test.py', 'model', 'pub.py', 're01.py', 'script01.py', 'script0626.py', 'script0627.py', 'script1.py', 'test.py', 'testbaidu.py', 'textfile.txt', 'unittest01', 'youdao.py', '__init__.py', '__pycache__']
父目录 ['.idea', 'config', 'framework', 'logs', 'pageobjects', 'testscript', 'testsuits', 'tools', 'venv', '__pycache__']
创建目录
top所指的目录树 ('.', ['model', 'subdir', 'unittest01', '__pycache__'], ['abnormal.py', 'abs01.py', 'abs02.py', 'baidu.py', 'baidujs.py', 'cainiao01.py', 'class01.py', 'class02.py', 'class_demo.py', 'class_test.py', 'class_test1.py', 'copy2.txt', 'decorator001.py', 'decorator02.py', 'fileop.py', 'imp.py', 'input_demo.py', 'login126.py', 'math_test.py', 'pub.py', 're01.py', 'script01.py', 'script0626.py', 'script0627.py', 'script1.py', 'test.py', 'testbaidu.py', 'textfile.txt', 'youdao.py', '__init__.py'])
top所指的目录树 ('.\\model', ['__pycache__'], ['count.py', 'new_count.py', '__init__.py'])
top所指的目录树 ('.\\model\\__pycache__', [], [])
top所指的目录树 ('.\\subdir', [], [])
top所指的目录树 ('.\\unittest01', ['__pycache__'], ['module.py', 'test.py'])
top所指的目录树 ('.\\unittest01\\__pycache__', [], ['module.cpython-37.pyc'])
top所指的目录树 ('.\\__pycache__', [], ['abs01.cpython-37.pyc', '__init__.cpython-37.pyc'])

(2)os.path模块

os.path模块提供对路径、目录、文件进行管理的函数:

os.path.abspath(path)返回path的绝对路径

os.path.basename(path)返回路径的基础名部分,path是文件返回文件名,path是目录,返回最后目录名

os.path.dirname(path)返回path路径中目录部分

os.path.exists(path)判断path是否存在

os.path.isfile(path)如果Path是文件,返回true

os.path.isdir(path)如果path是目录,返回true

os.path.getatime(path)返回最后一次访问时间,返回一个unix时间戳,文件不存在,报错OSError

os.path.getmtime(path)返回最后修改时间,文件不存在,报错OSError

os.path.getctime(path)返回创建时间,文件不存在,报错OSError

os.path.getsize(path)返回文件大小,字节为单位,文件不存在,报错OSError

import os.path
from datetime import datetime
fname='textfile.txt'
afname=r'E:\navy_lu\python\seleniumproject\testscript\textfile.txt'

basename=os.path.basename(afname)
print(basename)   #textfile.txt
dirname=os.path.dirname(afname)
print(dirname)    #E:\navy_lu\python\seleniumproject\testscript
print(os.path.abspath(afname))  #E:\navy_lu\python\seleniumproject\testscript\textfile.txt
print(os.path.abspath(fname)) #E:\navy_lu\python\seleniumproject\pageobjects\testscript\textfile.txt
#print(os.path.getsize(afname))
print(os.path.getsize(fname))  #14
print(datetime.fromtimestamp(os.path.getatime(fname)))  #2019-07-05 19:13:42.716783
print(datetime.fromtimestamp(os.path.getctime(fname)))  #2019-07-05 17:43:17.727878
print(datetime.fromtimestamp(os.path.getmtime(fname)))  #2019-07-05 18:30:43.643272
#
print(os.path.isfile(fname))   #True
print(os.path.isfile(afname))  #False
print(os.path.isdir(afname))   #False

5、logging模块

(1)日志级别:5级

DEBUG:debug(),调试时输出的信息

INFO:info(),输出一些关键点信息

WARNING:warning(),一些警告信息

ERROR:error(),比较严重的错误

CRITICAL:critical(),非常严重的错误

注意:当设置了一个级别,比它高的级别的信息都能输出。如设置了warning级别,比它高的error()和critical()都会输出

import logging

logging.basicConfig(level=logging.DEBUG)  #根(root)日志

logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

输出结果:

DEBUG:root:debug
INFO:root:info
WARNING:root:warning
ERROR:root:error
CRITICAL:root:

import logging

logging.basicConfig(level=logging.ERROR)  #根(root)日志

logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

运行结果:

ERROR:root:error
CRITICAL:root:critical

import logging

logging.basicConfig(level=logging.ERROR)  #根(root)日志
logger=logging.getLogger(__name__)  #自定义日志器
logging.debug('debug')
logging.info('info')
logging.warning('warning')
logging.error('error')
logging.critical('critical')

logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

 运行结果:

ERROR:root:error
CRITICAL:root:critical
ERROR:__main__:error
CRITICAL:__main__:critical

(2)日志器格式化

%(name)s:日志器名

%(asctime)s:输出日志时间

%(filename)s:包括路径的文件名

%(fileName)s:函数名

%(levelname)s:日志等级

%(processName)s:进程名

%(threadName)s:线程名

%(message)s:输出的消息

import logging

logging.basicConfig(level=logging.ERROR,format='%(asctime)s-%(threadName)s-%(name)s-%(message)s')  #根(root)日志其
logger=logging.getLogger(__name__)  #自定义日志器

logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

运行结果:

2019-07-09 20:13:52,660-MainThread-__main__-error
2019-07-09 20:13:52,660-MainThread-__main__-critical

(3)日志重定位:默认输出到控制台,也可以输出到别的地方

import logging

logging.basicConfig(level=logging.ERROR,format='%(asctime)s-%(threadName)s-%(name)s-%(message)s',filename='test.log')  #根(root)日志其
logger=logging.getLogger(__name__)  #自定义日志器

logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

运行后会在当前目录生成一个test.log文件,把日志输出到这个文件中,不再输出到控制台

(4)配置文件

需要配置:日志器(logger)、处理器(handler)、格式化器(formatter)、过滤器(filter)

  • logger:提供日志接口,供应用代码使用。
  • handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。
  •  filter:提供一种优雅的方式决定一个日志记录是否发送到handler。
  • formatter:指定日志记录输出的具体格式。

配置文件logger.conf代码如下:

​
[loggers] #日志器配置
keys=root,simpleExample  #日志器包含了root和simpleExample


[logger_root]#配置根日志器
level=DEBUG
handlers=consoleHandler #日志器对应的处理器


[logger_simpleExample]#配置simpleExample日志器
level=DEBUG
handlers=fileHandler #日志器对应的处理器
qua1name=logger1 #日志器名字,根日志器不需要配置名称,就叫根日志器


[handlers]
keys=consoleHandler,fileHandler #处理器包含了两个:


[handler_consoleHandler]#consoleHandler处理器
class=StreamHandler #基于输出流的
level=DEBUG
formatter=formatter2
args=(sys.stdout,)


[handler_fileHandler]#fileHandler处理器
class=FileHandler #输出到文件的
level=DEBUG
formatter=simpleFormatter
args=('test.log','a') #test.log输入到这个文件,a追加


[formatters]
keys=simpleFormatter,formatter2 #日志器包含simpleFormatter和formatter2


[formatter_simpleFormatter] #配置simpleFormatter格式化器
format=%(asctime)s-%(threadName)s-%(name)s-%(message)s

[formatter_formatter2] #配置simpleFormatter格式化器
format=%(asctime)s-%(name)s-%(message)s


#如果使用的是logger1,handlers就是filehandler,formatter就是simpleExample
#如果使用的是root日志器,handlers就是consoleHandler,formatter也是formatter2
#自己定义的日志器会继承根日志器

​
import logging
import logging.config

logging.config.fileConfig('logger.conf')
logger=logging.getLogger('logger1')  #自定义日志器

logger.debug('debug')
logger.info('info')
logger.warning('warning')
logger.error('error')
logger.critical('critical')

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值