1.os模块
python的os模块封装了操作系统的文件和目录的操作,比如文件的增删改查以及获取文件的路径、大小等。
- os常用的方法:
- os.getcwd():获取当前的目录路径
- os.listdir(path):返回指定路径下的文件和文件夹,如果不指定路径则默认当前路径
- os.mkdir(文件夹名称):创建一个新的文件夹
- os.rmdir(文件夹路径):删除文件夹
- os.rename(oldName, newName):修改文件的名字
- os.path.join(path1,path2):合并路径
- os.path.split(path):把路径分割为绝对路径和相对路径,返回一个元组
- os.path.exists(path):查看指定的文件夹是否存在
- os.path.isdir(path):判断文件是否是文件夹
- os.path.isfile(path):判断文件是否为文件
- os.path.basename(path):只获取文件名
- os.path.getsize(path):获取文件的大小
import os
#获取当前文件
print(os.getcwd())
#获取文件列表
print(os.listdir())
#创建一个文件夹
os.mkdir('testtest')
#删除文件夹
os.rmdir('testtest')
#重命名文件
os.rename('a.txt', 'b.txt')
#合并路径
path1 = '/data/code/'
for i in range(5):
path = os.path.join(path1+f'{i}.png')
print(path)
#切割路径
path = '/data/code/test/images/gcc'
print(os.path.split(path))
#查看文件夹是否存在
print(os.path.exists('./test'))
#查看文件名称
print(os.path.basename('/data/code/hello.py'))
#查看是否为文件夹
print(os.path.isdir('../test_py'))
#查看是否为文件
print(os.path.isfile('../test_py'))
#获取文件大小
print(os.path.getsize('b.txt'))
2.math模块
math模块是python的内置数学函数的库,支持整数和浮点数的运算。
- math库中的两个常量
- math.pi:圆周率
- math.e:自然常数e
- math中的常用的运算函数
- math.ceil(num):向上取整
- math.floor(num):向下取整
- math.fabs(num):取绝对值
- math.sqt(num):开平方根
- math.power(num, p):幂次方运算
import math
#圆周率
print(math.pi) #3.141592653589793
#自然常数
print(math.e) #2.718281828459045
#向上取整
print(math.ceil(1.7)) # 2
print(math.ceil(-1.7)) # -1
#向下取整
print(math.floor(1.7)) #1
print(math.floor(-1.7)) #-2
#取绝对值
print(math.fabs(-1.7)) #1.7
#开平方根
print(math.sqrt(4)) #2.0
#幂次方运算
print(math.pow(2, 3)) #8.0
3.random模块
random库中包含了许多与随机数相关的方法,比如生成随机的整数、浮点数,随机选取序列中元素等
- random中常用的方法
- random.random():随机生成0-1之间的浮点数
- random.randomint(num1, num2):生成num1-num2之间的随机整数
- random.uniform(num1, num2):生成num1-num2之间的随机浮点数
- random.shuffle(seq):随机打乱序列
- random.chioce(seq):随机选取序列中的元素
import random
#生成0-1随机的浮点数
print(random.random())
#生成指定范围内随机的浮点数
print(random.uniform(1, 150))
#生成指定范围内随机的整数
print(random.randint(1, 150))
#打乱序列
seq = list(range(0, 10, 2))
print('---打乱前---')
print(seq) # [0, 2, 4, 6, 8]
random.shuffle(seq)
print('---打乱后---')
print(seq) #[2, 4, 0, 6, 8]
#随机选择序列中的元素
print(random.choice(seq)) #2
4.日期和时间
- 时间日期常用的格式化符号
符号 | 含义 |
%y | 两位数的年份(00-99) |
%Y | 四位数的年份(0000-9999) |
%m | 月份(01-12) |
%d | 月内的一天(0-31) |
%H | 24小时制小时数(0-23) |
%M | 分钟数(00-59) |
%I | 12小时制小时数(01-12) |
%S | 秒(00-59) |
%Z | 当前时区的名称 |
%B | 本地完整的月份名称 |
%b | 本地简化的月份名称 |
%A | 本地完整的星期名称 |
%a | 本地简化的星期名称 |
- 时间元组
python中用九组数字处理时间,分别是4位数的年份,月份,日,小时,分钟,秒,星期几,一年中的第几天,夏令时。
序号 | 属性 | 值 |
0 | tm_year | 2008 |
1 | tm_mon | 1-12 |
2 | tm_mday | 1-31 |
3 | tm_hour | 0-23 |
4 | tm_min | 0-59 |
5 | tm_sec | 0-61 |
6 | tm_wday | 0-6(0是星期一) |
7 | tm_yday | 1-366 |
8 | tm_isdst | -1 0 1(-1是决定是否为夏令时旗帜) |
4.1time模块
- time常用函数
- time.time():返回当前时间的时间戳,返回的是浮点数
- time.gmtime(时间戳):将时间戳转换成UTC(0时区)的struct_time对象
- time.localtime(时间戳):将时间戳转换成本地时间,如果不提供时间戳,则默认是当前时间,返回时间元组struct_time对象
- time.mktime(时间元组):与localtime函数相反,把时间元组转换成时间戳
- time.asctime(时间元组):asc函数接受时间元组并且返回可读形式为"Tue Jul 17 17:03:01 2018"(2018年7月17日周二17时03分01秒)
- time.ctime(时间戳):该函数能把一个时间戳转换成time.asctime()的形式
- time.sleep(秒数):推迟调用线程的时间
- time.strftime(format, 时间元组):接收一个时间元组,并返回可读字符串表示当地时间,格式由参数format决定
- time.strptime(str, format):把指定格式的时间字符串解析为时间元组
import time
t = 0
time_struct = (2017, 7, 17, 17, 3, 1, 1, 1, 0)
#返回时间戳time.time
print(time.time()) #1662733079.8440037
#时间戳转成本地时间的时间元组time.localtime
print(time.localtime(t)) # time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
#时间戳转成UTC(0时区)的时间元组time.gmtime
print(time.gmtime(t)) #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
#把时间元组转换成时间戳time.localtime
print(time.mktime(time_struct))# 1500282181.0
#把时间元组转换成可读的日期time.asctime
print(time.asctime(time_struct))#Tue Jul 17 17:03:01 2017
#把时间戳转换成可读形式的日期time.ctime
print(time.ctime(t))#Thu Jan 1 08:00:00 1970
#推迟线程执行的时间time.sleep
time.sleep(1)
#把时间元组转换成可读形式的字符串time.strftime
print(time.strftime('%b %d %Y %H:%M:%S', time_struct)) #Jul 17 2017 17:03:01
#把可读的时间字符串转换成时间元组
print(time.strptime('Jul 17 2017 17:03:01', '%b %d %Y %H:%M:%S')) #time.struct_time(tm_year=2017, tm_mon=7, tm_mday=17, tm_hour=17, tm_min=3, tm_sec=1, tm_wday=0, tm_yday=198, tm_isdst=-1)
4.2datetime模块
datetime模块包含了日期和时间的所有信息,它支持从0001年到9999年之间的日期,datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别代表最大小年份1和最大年份9999。
4.2.1date对象
date对象表示日历中的一个日期,包含年月日,date对象的构造函数包含三个参数:year,month和day。
- date对象常用的方法
- date.today():返回当天的日期
- date.weekday(dt):返回星期几(0-6)
- date.isoweekday(dt):和weekday相似,返回星期几(1-7)
- date.isoformate(dt):返回日期的iso格式,YYYY-MM-DD
- d.strftime(format):格式化时间
from datetime import date
d = date(2018, 7, 1)
#today
print(date.today()) #2022-09-09
#weekday
print(date.weekday(dt)) #6
#isoweekday
print(date.isoweekday(dt)) #7
#isoformate
print(date.isoformat(dt)) #2018-07-01
#strftime
print(d.strftime("%y-%b-%d")) #18-Jul-01
4.2.2time对象
time对象表示一天中的(本地)时间,与任何特定日期无关,time构造函数接收时,分,秒,毫秒,时区和信息等参数,含有两个常量min和max,分别代表最小值00:00:00和最大值23:59:59.999999
- time对象常用的方法
- t.strftime(format):格式化时间
- t.isoformat():返回日期的iso格式,HH:MM:SS
from datetime import time
t = time(hour=16, second=7, microsecond=123)
#strftime
print(t.strftime("%H:%M:%S")) #16:00:07
print(t.strftime("%p %I:%M:%S:%f")) #PM 04:00:07:000123
#isoformate
print(t.isoformat()) #16:00:07.000123
4.2.3datetime对象
datetime是date和time的结合体,包含了date和time的所有信息,最常用的就是datetime
- datetime常用的方法:
- datetime.today():返回当前的日期和时间
- datetime.now(tzinfo):如果不传tzinfo则会today相同
- datetime.utcnow():返回utc时间的datetime对象
- date.fromtimestamp():根据时间戳生成datetime对象
- datetime.combine(date,time):根据date和time创建一个对象
- dt.strftime(format):格式化时间
from datetime import datetime, date, time
#年月日时必选参数其余均为可选参数
dt = datetime(year=2018, month=7, day=1, hour=16, second=10)
#today
print(datetime.today()) #2022-09-09 23:14:48.447153
#now
print(datetime.now()) #2022-09-09 23:14:48.537026
#utcnow
print(datetime.utcnow()) #2022-09-09 15:14:48.537026
#fromtimestamp
print(datetime.fromtimestamp(0))# 1970-01-01 08:00:00
#date方法获取date和time对象
print(dt.date()) #2018-07-01
print(dt.time()) #16:00:10
#combind
d = date(year=2018, month=7, day=1)
t = time(hour=16, second=10)
print(datetime.combine(d, t)) #2018-07-01 16:00:10
#strftime
print(dt.strftime("%Y-%m-%d %H:%M:%S")) #2018-07-01 16:00:10
print(dt.strftime("%y-%m-%d %a %I:%M:%S")) #8-07-01 Sun 04:00:10
4.2.4timedelta对象
timedelta表示的是两个日期或时间的差,时间包括日期、秒、毫秒、分钟、小时和星期,所有属性都是可选的并且默认为0
from datetime import timedelta, datetime
dt1 = datetime(2018, 7, 1, 16, 15, 10)
dt2 = dt1+timedelta(weeks=-2)
print(dt1) #2018-07-01 16:15:10
print(dt2) #2018-06-17 16:15:10
print(dt1 - dt2) #14 days, 0:00:00
print(dt2 - dt1) #-14 days, 0:00:00