Python random模块 os及sys模块 datetime模块 日志模块

Python random模块 os及sys模块 datetime模块 日志模块

1.常用的模块
math 数字计算,三角函数,科学计算
ceil floor pow fabs log10 pi(圆周率) e(自然常数)
使用dir函数观察对象具有的属性
import math
print(dir(math))
查看使用math的属性
print(math.pi) print(math.e)
使用math的方法
print(math.pow(3,3))
使用help函数在交互模式下获取帮助信息
import math
help(math.pow)

2.random 随机模块
random方法:返回一个从0到1之间的随机数 [0,1)
import random
print(random.random())
randint方法::返回一个指定区间的随机整数(闭区间)
print(random.randint(1,100))
uniform(a,b):返回一个a-b的闭合区间的随机浮点数
print(random.uniform(2,6))
randrange方法:和range函数类似但他将随机返回我们的range类型的一个元素,
有三个参数,[start=0],stop[, step]
print(random.randrange(1,6,4))
choice方法:接受一个序列,并随机返回序列的一个元素
print(random.choice(“abcd”))
shuffle方法:将传入的列表顺序随机打乱(没返回)
l = [1,2,3,4,5,6,7,8,9]
random.shuffle(l)
print(l)
sample方法:将传入的序列随机切取指定长度的片段返回(随机切取的元素构成的列表)
print(randon.sample(“abcdef”),3) #全切则返回打乱的列表

3.os及sys模块
在Python中os模块提供了一种方便的使用操作系统函数的方法。os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;
这个模块主要有以下常用的方法:
os.remove(‘path/filename’) 删除文件
os.rename(oldname, newname) 重命名文件
os.walk()
for x in os.walk("…/.")
print(x) 生成目录树下的所有文件名
os.chdir(‘dirname’) 改变目录
os.mkdir/makedirs(‘dirname’) 创建目录/多层目录
os.rmdir/removedirs(‘dirname’) 删除目录/多层目录
os.listdir(‘dirname’) 列出指定目录的文件
os.getcwd() 取得当前工作目录
os.chmod() 改变目录权限
os.environ 获取操作系统的环境变量
os.path.basename(‘path/filename’) 去掉目录路径,返回文件名
os.path.dirname(‘path/filename’) 去掉文件名,返回目录路径
os.path.join(path1[,path2[,…]]) 将分离的各部分组合成一个路径名
os.path.split(‘path’) 返回( dirname(), basename())元组
os.path.splitext() 返回 (filename, extension) 元组
os.path.getatime\ctime\mtime 分别返回最近访问、创建、修改时间
os.path.getsize() 返回文件大小
os.path.exists() 是否存在
os.path.isabs() 是否为绝对路径
os.path.isdir() 是否为目录
os.path.isfile() 是否为文件

os提供了系统的操作接口(文件操作,目录操作)
路径表示:/开头代表的时根目录,类似于windows中的F:\ 根代表*目录
以*目录开头的一般是绝对路径的表述方式
相对路径一般是指从当前工作路径开始计算 当前路径使用 ./表示 …/表示上级目录 /代表下级目录
什么是路径:是某个具体的文件的位置表示字符串。
当前路径是指当前工作路径
当前工作路径获取: os.getcwd()
删除文件 os.remove(path/file_name)
Python random模块 os及sys模块 datetime模块 日志模块
os.walk():生成目录树下的所有文件(返回对象是一个生成器,需要通过遍历去除其中内容)
for x in os.walk("…/.")
print(x)
显示指定目录下的所有mp3文件
Python random模块 os及sys模块 datetime模块 日志模块

import os
for x in os.walk(“D:\python环境\python”):
print(x)
l= [ y for x in [ y for y in [x[-1] for x in os.walk(“D:\python环境\python”)]] for y in x if y[-3:] == “.py”]
print(l)
展开式:
import os
for x in os.walk(’\python环境\python’):
for y in x[-1]:
if y[-3:] == ‘.py’:
print(y)

查询指定~~流程图(网上搜的)
Python random模块 os及sys模块 datetime模块 日志模块

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当
前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时exit(0)
sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.maxunicode 最大的Unicode值
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix 返回平*立的python文件安装的位置
sys.byteorder 本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的
值是’little’
sys.copyright 记录python版权相关的东西
sys.api_version 解释器的C的API版本

sys模块主要提供了python环境的相关属性对象
import sys
sys.argv : 用开以列表形式接受程序运行时传入的参数,第一个参数为当前程序名
path: 代表python运行的环境变量,可以通过修改该值实现动态修改模块

4.datetime模块

日期时间模块 datetime

导入:
from datetime import*

核心概念:时间戳
以格林威治天文台所在位置的1970年1月1日0时0分0秒开始计算到某个时间点的秒数记为时间戳
在python中时间戳以秒为基本单位,很多语言中以毫秒为基本单位,因此换算系数为1000
时间戳本质上就是一个数字

UTC 世界时间,唯一的,统一的(全世界),其实就是0时区(格林威治时区)

时区:

1.在datetime模块中有五个对象
1)
from datetime import*
print(datetime.now())
打印现在时间

now = datetime.now()
guoqing = datetime(2019,10,1,8,30)
print(guoqing)
打印任意时间

datetime.utcnow()
获取当前世界标准时间

2)获取时间戳使用时间对象的timestamp
from datetime import*
datetime.now()
now = datetime.now()
guoqing = datetime(2019,10,1,8,30)
utcnow = datetime.utcnow()
print(now.timestamp())
print(guoqing.timestamp())
print(utcnow.timestamp())
Python random模块 os及sys模块 datetime模块 日志模块

3)获取时间戳对应的时间
按照时间戳获取时间,注意:datetime时datetime模块的对象,而不是我们获取到的datetime对象
now = datetime.now()
now_t = now.timestamp()
获取时间戳对应的本地时间
now = datetime.now()
now_t = now.timestamp()
print(datetime.fromtimestamp(now_t))
获取时间戳对应的utc时间
now = datetime.now()
now_t = now.timestamp()
print(datetime.fromtimestamp(now_t))
print(datetime.utcfromtimestamp(now_t))
Python random模块 os及sys模块 datetime模块 日志模块

4)时间转字符串 使用strftime
%y(两位年) %Y(四位年) %m(月份) %D(月/日/年) %H(小时) %h(月份英文简写) %M(分钟) %s(时间戳) %d(日期) %w(一周的第几天) %W(一年的第几周)
now = datetime.now()
now_s = now.strftime("%Y 年 %m 月 %d 日 %H 时 %M 分钟")
print(now_s)
Python random模块 os及sys模块 datetime模块 日志模块
5)字符串转时间 使用datetime的strptime
str_time = datetime.strptime(“2018年11月16日10时49”,"%Y年%m月%d日%H时%M")
print(str_time)
Python random模块 os及sys模块 datetime模块 日志模块

6)时间运算
将要加的时间创建成datadelta对象,然后直接和时间相加减
直接使用两个时间相加减获取一个datedelta对象
now = datetime.now()
one_mot = timedelta(days = 1) (hours = 1) ()
new_time = now + one_mot
print(new_time)
相减
da = datetime(2019,1,1) - now
da.seconds #看相差多少秒

7)程序休眠
import time
start = time.time()
time.sleep(3.55) #休眠3.55秒
end = time.time()
print(end-start)

8)换时区
import pytz
time_zero #创建一个时区对象
time_zero = pytz.time_zero(“Asia/shanghai”)
print(time_zero)
Python random模块 os及sys模块 datetime模块 日志模块
5.日志模块
1.导入模块
设置日志记录级别 debug info warning error

import logging
logging.basicConfig(level=logging.DEBUG,
format=’%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s’,
datefmt=’%a, %d %b %Y %H:%M:%S’,
filename=‘myapp.log’,
filemode=‘w’)
logging.debug(“这是 一个debug级别的日志”)
logging.info(“这是一个info级别的日志”)
logging.warning(“这是 一个warning级别的日志”)
logging.error(“这是一个error级别的日志”)

try:
num = input(“请输入一个数字:”)
num = float(num)

except Exception as e:
logging.error(e)

logging.basicConfig函数各参数说明:
filename:
指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,‘w’或’a’
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s:
打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d:
打印线程ID
%(threadName)s: 打印线程名称
%(process)d:
打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略