day14os、时间、math和random模块
一、os模块
由于os模块内容较多,以下我罗列数据分析常用的os模块的相关用法!
1.os模块的作用
os模块 - 文件或者文件夹(目录)或者路径相关操作
例如:创建文件夹、创建文件、删除文件、判断文件是否存在、获取绝对路径、获取一个文件夹中所有的文件等等
首先先导入os模块(import os)
1)os.getcwd() - 返回当前工作目录
2)os.listdir() - 获取指定文件夹中所有的内容的名字
3)创建文件夹
a.os.mkdir(文件路径) - 在指定路径下创建指定的文件夹(整个路径中只有最后那个文件不存在才可以创建)
b.os.makedirs(文件夹路径)- 递归创建文件夹(可以创建路径中所有不存在的文件夹)
4)返回绝对路径
什么是绝对路径:文件或者文件在计算机中全路径(windows电脑绝对路径从盘开始写)
什么是相对路径:用.表示当前目录(当前目录指的是当前代码所指的文件夹)
用…表示当前目录的上层目录
#os.path.abspath(相对路径) - 返回相对路径对应的绝对路径
5)获取文件名
#os.path.basename(绝对路径) - 获取文件路径中的文件名
6)检测路径是否有效,有效返回True,否则返回False
#os.path.exists(文件名)
7)判断是否是文件或者是文件夹
#a.os.path.isfile(路径)- 是否是文件
#os.path.isdir(路径) - 是否是文件夹
8)把目录和文件合成一个路径
#os.path.join(文件夹(目录),文件名)
9)获取文件的扩展名(后缀)
#os.path.splitext(路径)
二、math、random模块
1.数学模块
math(普通数学模块)
cmath(针对复数的数学模块)
导入import math,cmath
'''
1)浮点数转整数
math.ceil(浮点数) - (向上取整)取较大整数
math.floor(浮点数) - (向下取整)取较小整数
round(浮点数) - (四舍五入)
2)求绝对值
math.fabs(数字) - 获取绝对值,结果是浮点数
abs(数据) - 获取绝对值,数据是整型,绝对值就是整型,如果是浮点数,绝对值就是浮点数
'''
import math,cmath
print(math.ceil(2.1))#3
print(math.floor(2.1))#2
print(round(4.5567))#5
print(math.fabs(-1))#1.0
print(abs(-2))#2
2.随机模块 - random
'''
产生一个随机整数:random.randint(M,N) - 产生M到N的随机整数
随机小小数:random.random() - 产生一个0-1的随机小数
random.randrange(M,N,step)- 在指定的等差数列中随机获取一个数
random.shuffle(序列) - 洗牌(随机打乱列表中元素的顺序;序列必须是可变并且有序)
random.choice(序列) - 从序列中随机获取一个元素
random.choices(序列,k=n) - 从序列中随机获取指定数量的元素
random.choices(序列,k=n,cum_weights=[序列])
random.sample(序列,k=n,count=
'''
import random
print(random.randint(10, 20))#从10到20中随机产生一个整数
print(random.random()) # 随机小数0-1
print(random.random() * 5 + 10) # 随机获取10到15以内的浮点数
print(random.randrange(10, 21, 2)) # 10到20以内,随机偶数
nums = [10, 20, 30, 40, 50, 60]
random.shuffle(nums)
print(nums) # 随机打乱指定列表中元素的顺序
print(random.choice(nums)) # 从序列中随机获取一个元素
print(random.choices(nums, k=3)) # 从序列中随机获取指定数量的元素(默认情况下元素的权重都一样,放回抽取)
options = ['特等奖', '一等奖', '二等奖', '三等奖', '再接再厉']
result = random.choices(options, cum_weights=[1, 3, 30, 100, 600], k=1)
print(result)
result = random.sample(options, k=3)#不放回抽取
print(result)
三、时间模块
导入时间模块
1.time.time()
'''
1.time.time() - 获取当前时间
时间戳 -> 用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差来表示一个时间,单位是秒
'''
t1 = time.time()
print(t1) # 1646294631.8235874 -> 时间戳
2.time.localtime()
'''
time.localtime() - 获取本地当前时间,返回结构体时间
time.localtime(时间戳) - 将指定时间戳转为时间信息
'''
t2 = time.localtime(1646294631.8235874)
print(t2)#time.struct_time(tm_year=2022, tm_mon=3, tm_mday=3, tm_hour=16, tm_min=3, tm_sec=51, tm_wday=3, tm_yday=62, tm_isdst=0)
print(t2.tm_year)#2022
3.time.mktime()
# time.mktime(结构体时间) - 将结构体时间转换成时间戳
t2 = time.localtime
t3 = time.mktime(t2)
print(t3)#1646294631.8235874
4.time.strftime()
#time.strftime(时间格式字符串,结构体时间) - 将结构体时间转换成指定格式的字符串时间
t2 = time.localtime
t3 = time.strftime('%Y年%m月%d日 %H时%M分%S秒', t2)
print(t3)#2022年03月03日 16时03分51秒
5.time.strptime()
'''
time.strptime(字符串时间,时间格式) - 将字符串时间转换成结构体时间
'''
6.time.sleep()
'''
time.sleep(秒) - 让程序暂停指定时间
'''
1)datetime类
1.获取当前时间
t1 = datetime.now()
print(t1, type(t1))#2022-03-03 19:52:19.549956 <class 'datetime.datetime'>
t2 = date.today()
print(t2)#2022-03-03
2.获取具体的时间信息
print(t1.year)#2022
print(t1.month)#3
print(t1.day)#3
print(t1.hour)#19
print(t1.weekday())#3
3.字符串时间转datetime
result = datetime.strptime('2022年3月3日','%Y年%m月%d日')
print(result,result.weekday())
4.将datetime转换为字符串
# datetime时间对象.strftime(时间格式)
t1 = datetime.now()
result = t1.strftime('%Y-%m-%d')
print(result)
5.将datetime转换成结构体时间
# 时间对象.timetuple()
t1 = datetime.now()
result = t1 . timetuple()
print(result)
6.timedelta - 完成时间的加减操作
注意:timedelta在完成时间加减操作的时候只能一秒、分、时、周、或者天为单位
t2 = datetime.strptime('2022-12-31 23:59:40','%Y-%m-%d %H-%M-%S')
t3 = t2+timedelta(days=3)
print(t3)