模块和文件
1.os模块
-
os模块 ---- 提供文件或者文件夹(目录)或者路径相关的操作
-
作用:创建文件夹,创建文件,删除文件,判断文件是否存在,获取路径,获取文件中的所有文件等等。
1.1返回当前工作目录
print(os.getcwd())
1.2获取指定文件夹中的所有内容
print(os.listdir(r'D:\千峰'))
1.3创建文件夹
os.mkdir(文件夹路径)
os.mkdir() # 必须文件夹路径中只有最后一个不存在
os.makedirs() # 文件夹路径中不存在的文件夹都会创建出来
1.4返回绝对路径
os.path.abspath(相对路径) #返回相对路径的绝对路径
-
绝对路径:文件或者文件夹在计算机中的全路径(Windows系统从盘开始写)
-
相对路径:
- 用“.”表示当前目录(当前代码文件所在的文件夹)(.\Str.py)
- 用“…”表示当前目录的上层目录
1.5获取文件名
os.path.basname(文件路径) # 获取文件路径中的文件名
result = os.path.basename(r"D:\千峰\日常\第三周\day13-模块包和异常\package1\test.py")
print(result)
1.6检测路径是否有效
os.path.exists(文件路径) # 相对路径或者绝对路径
1.7判断是否是文件夹或是文件
os.path.isfile(路径) # 是否为文件
os.path.isdir(路径) # 是否为目录
1.8把目录和文件名合成一个路径
os.path.join(文件名, 目录)
1.9分割路径中的文件名和拓展名(后缀)
url = r".\第二周\总结模板.md"
result = os.path.splitext(url)
print(result[-1])
2.数学模块
math和cmath,其中cmath针对复数
2.1浮点数转整数
math.ceil(浮点数) # 往大取整
print(math.ceil(2.4345))
math.floor(浮点数) # 往小取整
print(math.floor(2.4534))
round(浮点数) # 大体可以看做四舍五入
print(round(2.5200012))
print(round(2.3345340))
2.2求绝对值
math.fabs(数字) # 绝对值为浮点数
abs(数字) # 获取绝对值,数据类型和原数据相同
print(math.fabs(-324234))
print(abs(-343.345))
3.random模块 ---- 随机模块
3.1产生随机整数
- 产生随机整数
ra.randint(M, N)
print(ra.randint(10, 20))
- 产生随机小数
ra.random()
print(ra.random())
- ra.randrange(M, N, step) ---- 从range产生的数列中随机获得一个数
3.2洗牌
ra.shuffle(序列) # 洗牌(随机打乱序列中的元素的顺序;序列必须是有序且可变的)
list1 = [12, 134, 34, 234, 222]
ra.shuffle(list1)
print(list1)
3.3抽牌
①ra.choice(序列) # 从序列中随机取一个数,序列无要求
②ra.choices(序列, k = 个数) # 从序列中获取指定个数的数(默认情况下元素权重相同;取数是一种有放回抽取)
ra.choices(序列, 权重序列, k = 个数) # 权重可以看做元素的份数
list1 = ["23", "45", "67", "876", "543"]
result = ra.choices(list1, cum_weights=[5, 10, 30, 30, 20], k=1) # 权重
print(result)
③ra.sample(序列, k = 个数) # 从序列中随机获取指定个数元素(无放回抽取)
4.time模块
-
time.time() ---- 获取当前时间,得到的是时间戳
- 时间戳:用指定时间到1970年1月1日0时0分0秒的时间(格林威治时间)差来表示时间,单位秒(节约内存)
-
time.localtime() ---- 获取本地当前时间,返回时间体结构
- time.localtime() ---- 将时间戳转换成结构体时间
-
time.mktime(结构体时间) ---- 将结构体时间转换为时间戳
-
time.strftime(时间格式字符串, 结构体时间) ---- 将结构体时间转换成指定格式的字符串时间
- time.strftime("%Y年%M月%D日 %H时%M分%S秒", 结构体时间)
-
time.strptime(字符串时间, 时间格式) ---- 将字符串时间转换为结构体时间
-
time.sleep(秒) ---- 让程序暂停指定时间
5.datetime模块
5.1datetime类
- 获取当前时间
t1 = datetime.now()
print(t1)
t2 = datetime.today()
print(t2)
- 获取具体的时间信息
t1 = datetime.now()
print(t1.year)
print(t1.month)
print(t1.day)
print(t1.hour)
print(t1.minute)
print(t1.second)
print(t1.weekday())
- 字符串时间转datetime
- datetime.strptime(字符串时间, 时间格式)
result = datetime.strptime('2011年2月4日', '%Y年%m月%d日')
print(result, result.weekday())
- 将datetime转换成字符串
- datetime时间对象.strftime(时间格式)
t1 = datetime.now()
result = t1.strftime('%Y/%m/%d %a')
print(result)
- 将datetime转换成结构体时间
- 时间对象.timetuple()
t1 = datetime.now() # 当前时间
result = t1.timetuple() # 转为结构体时间
print(result)
print(time.mktime(result)) #将结构体时间转为时间戳
5.2timedelta ---- 完成时间的加减操作
timedelta在完成时间加减操作的时候时间只能以秒、分、时、周或者天为单位
- 1小时以后时间
t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S') # 字符串时间转为datetime
result = t2 + timedelta(hours=1)
print(result)
- 1小时前的时间
t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S')
result = t2 - timedelta(hours=1)
print(result)
- 三天后的时间
t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S')
result = t2 + timedelta(days=3)
print(result)
- 1小时30分钟前的时间
t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S')
result = t2 - timedelta(hours=1, minutes=30)
print(result)
- 三周前的时间
t2 = datetime.strptime('2022-12-31 23:59:40', '%Y-%m-%d %H:%M:%S')
result = t2 - timedelta(weeks=3)
print(result)