1.1 主要的模块
datetime.date() #处理日期(年、月、日) datetime.time() #处理时间(时、分、秒和毫秒) datetime.datetime() #处理日期+时间 datetime.timedelta() #处理时段(时间间隔)
- #获取今天的时间
- print(datetime.date.today())
- print(datetime.datetime.now())
-
- print(datetime.date.today().strftime("%Y-%m-%d %H-%M-%S"))
- print(datetime.datetime.now().isoformat())
1.2 时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒到现在的总秒数。
1.2.1 将日期转换为时间戳以及将时间戳转换为日期
timetuple函数:将日期转化为struct_time格式
time.mktime函数:返回用秒数来表示时间的浮点数
- import datetime,time
-
- today = datetime.date.today()
- print(today.timetuple())
-
- print(time.mktime(today.timetuple()))
-
- print(datetime.date.fromtimestamp(1668614400.0))
1.2.2 时间上的加减法
timedelta()方法表示两个时间点的间隔
- import datetime
- today = datetime.datetime.now()
- print(today)
-
- yesterday = today - datetime.timedelta(days=1)
- print(yesterday)
-
- hours = today - datetime.timedelta(hours=1)
- print(hours)
跟日历相关的若干函数和类,可以生成文本形式的日历。
2.1 常用函数
import calendar calendar.calendar(<年>) calendar.month(<年>,<月>) #返回多行字符串 calendar.prmonth(<年>,<月>) #相当于print(calendar.month(<年>,<月>)) calendar.prcal(<年>) #相当于print(calendar.calendar(<年>))
- import calendar
-
- print(calendar.month(2022,11))
- print(calendar.calendar(2022))
输出结果展示:
- E:\ProgramData\Anaconda3\python.exe C:/Users/dl/PycharmProjects/MyProjects/1.py
- November 2022
- Mo Tu We Th Fr Sa Su
- 1 2 3 4 5 6
- 7 8 9 10 11 12 13
- 14 15 16 17 18 19 20
- 21 22 23 24 25 26 27
- 28 29 30
-
- 2022
-
- January February March
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 1 2 3 4 5 6
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 7 8 9 10 11 12 13
- 10 11 12 13 14 15 16 14 15 16 17 18 19 20 14 15 16 17 18 19 20
- 17 18 19 20 21 22 23 21 22 23 24 25 26 27 21 22 23 24 25 26 27
- 24 25 26 27 28 29 30 28 28 29 30 31
- 31
-
- April May June
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 1 1 2 3 4 5
- 4 5 6 7 8 9 10 2 3 4 5 6 7 8 6 7 8 9 10 11 12
- 11 12 13 14 15 16 17 9 10 11 12 13 14 15 13 14 15 16 17 18 19
- 18 19 20 21 22 23 24 16 17 18 19 20 21 22 20 21 22 23 24 25 26
- 25 26 27 28 29 30 23 24 25 26 27 28 29 27 28 29 30
- 30 31
-
- July August September
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 3 1 2 3 4 5 6 7 1 2 3 4
- 4 5 6 7 8 9 10 8 9 10 11 12 13 14 5 6 7 8 9 10 11
- 11 12 13 14 15 16 17 15 16 17 18 19 20 21 12 13 14 15 16 17 18
- 18 19 20 21 22 23 24 22 23 24 25 26 27 28 19 20 21 22 23 24 25
- 25 26 27 28 29 30 31 29 30 31 26 27 28 29 30
-
- October November December
- Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
- 1 2 1 2 3 4 5 6 1 2 3 4
- 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11
- 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18
- 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25
- 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31
2.2 将日历列表化
calendar.monthcalendar()
返回某一年的某一个月份日历,是一个嵌套列表。最里层的列表含有七个元素,代表一周(从周一到周日)。如果没有本月的日期,则为0。
- import calendar
-
- print(calendar.monthcalendar(2022,11))
-
- 输出结果:
-
- [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13], [14, 15, 16, 17, 18, 19, 20], [21, 22, 23, 24, 25, 26, 27], [28, 29, 30, 0, 0, 0, 0]]
2.3 判断闰年
calendar.isleap(<年>)
- import calendar
-
- print(calendar.isleap(2022))
- print(calendar.isleap(2000))
-
- 输出结果:
- False
- True
2.4 判断月数和周几
计算某月从周几开始,共有几天的时候,是从0开始,周一、周二……
计算某天是周几的时候,返回的是0-6,依次对应的是周一到周日。
- import calendar
-
- print(calendar.monthrange(2022,11))
- print(calendar.weekday(2022,11,18))
-
- 输出结果:
- (1, 30)
- 4
3.1 获取时间戳
time.time() 方法
可以计算某段程序的运行时间
- import time
-
- t1 = time.time()
- a = 0
- for i in range(10000):
- a += i
- print(a)
- t2 = time.time()
- print(t2-t1)
3.2 获取日期格式
3.2.1 获取当前时间
- import time
-
- t1 = time.asctime()
- t2 = time.ctime()
- print(t1)
- print(t2)
3.2.2 将元组数据转化为日期
- import time
-
- t = (2022,11,18,11,8,30,0,0,0)
- print(time.asctime(t))
-
- 输出结果:
- Mon Nov 18 11:08:30 2022
3.3 利用索引获取时间信息
- import time
-
- print(time.localtime())
- t = time.localtime()
- year = t[0]
- print(year)
4.1 random模块
伪随机数:计算机中的随机函数是按照一定的算法模拟产生的,其结果是确定的,是可预见的。
随机数种子:随机数种子相同,随机数序列也是相同的。
random.seed(a = None)
random() #生成范围在【0,1)之间的随机实数
uniform() #生成指定范围内的随机浮点数
randint(m,n) #生成指定范围【m,n】内的整数
randrange(a,b,n) #可以在【a,b)范围内,按n递增的集合中随机选择一个数
getrandbits(k) #生成k位二进制的随机整数
choice() #从指定序列中随机选择一个元素
sample() #能指定每次随机元素的个数
shuffle() #可以将可变序列中所有元素随机排序
- import random
- colors = ['red','green','blue','yellow','black']
- print(random.choice(colors))
- print(random.sample(colors,3))
- random.shuffle(colors)
- print(colors)
-
- 输出结果:
- black
- ['black', 'blue', 'green']
- ['red', 'blue', 'green', 'yellow', 'black']
5.1 文件的打开
open()函数:
f = open(filename[,mode[,buffering]])
f:open()返回的文件对象
filename:文件的字符串名
mode:可选参数,打开模式和文件类型
buffering:可选参数,文件的缓冲区,默认为-1
文件的打开模式:
mode第一个字母表明对其的操作:
‘r’:表示读模式
‘w’:表示写模式
'x':表示在文件不存在的情况下新创建并写文件
‘a’:表示在文件末尾追加写内容
'+':表示读写模式
mode第二个字母是文件类型:
‘t’:表示文本类型
‘b’:表示二进制文件
5.2 文件的读写和访问
文件的写操作:
f.write(str)
f.writelines(strlist):写入字符串列表
文件的读操作:
f.read()
f.readline():返回一行
f.readlines():返回所有行、列表
- f = open('mytxt','w')
- f.writelines(['apple\n','orange\n'])
- f.close()
- f = open('mytxt','r')
- print(f.readlines())
- f.close()
文件打开后一定要记得关闭,关闭的作用是终止对外部文件的连接,同时将缓存区的数据刷新到硬盘上。
5.3 结构化文本文件:CSV
文件读取—reader
re = csv.reader()
接受一个可迭代对象(比如csv文件),能返回一个生成器,可以从其中解析出内容。
文件读取—DictReader
与reader类似,适用于带有表头的csv文件,返回的每一个单元格都放在一个元组的值内。
文件写操作:
w = csv.writer()w.writerow(rows)
当文件不存在时,自动生成,支持单行写入和多行写入
字典数据写入:
w = csv.DictWriter()
w.writeheader()
w.writerow(rows)