time模块
import time
"""
1. 时间戳
用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差(单位是秒)来表示时间的方式就是时间戳
注:格林威治时间和北京时间有8个小时的时差
4个字节(时间戳存储时间)
16个字节(用字符串存储时间)
"""
print(time.time())
t1 = time.localtime()
print(t1.tm_year, t1.tm_mon, t1.tm_mday, t1.tm_hour, t1.tm_min, t1.tm_sec)
print(time.localtime(0))
print('========')
"""
%Y - 年
%m - 月
%d - 日
%H - 时(24小时制)
%I - 时(12小时制)
%M - 分
%S - 秒
%p - AM、PM(上午、下午)
%a - 星期英文单词缩写
%A - 星期英文单词全拼
%b - 月份英文缩写
%B - 月份英文全拼
"""
result = time.strftime('%Y年%m月%d日 %H:%M:%S', t1)
print(result)
result = time.strftime('%Y-%m-%d %H:%M:%S', t1)
print(result)
result = time.strftime('%m月%d日 %p%I:%M %B', t1)
print(result)
t3 = time.strptime('2010-10-2', '%Y-%m-%d')
print(f'周{t3.tm_wday + 1}')
print(t3)
result = time.mktime(t3)
print(result)
datatime模块
from datetime import datetime, timedelta
t1 = datetime(2010, 10, 2)
print(t1)
t2 = datetime(2011, 9, 30, 11, 15, 30)
print(t2)
print(t2.month)
print(t2.hour)
t3 = datetime.now()
print(t3)
t4 = t3.timetuple()
print(t4)
st5 = t3.strftime('%Y年%m月%d日 %a')
print(st5)
str6 = '2003-7-1'
t5 = datetime.strptime(str6, '%Y-%m-%d')
print(t5)
t6 = t5 + timedelta(days=45)
print(t6)
t7 = t5 - timedelta(hours=8)
print(t7)
t8 = t5 + timedelta(days=1, hours=5, minutes=15)
print(t8)
hashlib模块
import hashlib
"""
hash加密算法主要有:md5 和 shaxxx
1. hash加密的特点:
a. 不可逆(通过原数据加密后(产生的摘要)无法还原)
b. 相同的数据通过相同的算法产生摘要(密文)是一样的
c. 不同大小的数据在使用相同的算法产生的摘要的长度一致
2. 使用hashlib产生数据的摘要
"""
hash = hashlib.md5()
pw = '123456'
hash.update(pw.encode())
result = hash.hexdigest()
print(result)
print('-----------------------------------------------------')
"""
python二进制数据类型 - bytes
字符串和bytes的相互转换
1) str -> bytes
方法一:bytes(字符串, 'utf-8')
方法二:b'字符集'
方法三:字符串.encode()
2) bytes -> str
方法一:str(二进制数据, 'utf-8')
方法二:二进制.decode()
"""
print(bytes('abc', 'utf-8'))
b1 = b'abc'
print(type(b1))
str1 = 'anc'
print(str1.encode())
print(str(b1, 'utf-8'))
print(b1.decode())
文件操作
"""
程序中保存的数据默认都是存储在运行内容中,运行内存中的数据在程序结束的时候都会被释放。
如果希望程序运行过程中产生的数据在程序结束后不被销毁,就需要将数据存储到磁盘中。
将数据存储到磁盘过程叫做数据本地化。
数据本地化的基本原理 - 将数据通过文件存储到磁盘中。
"""
"""
文件操作主要解决两个问题:a.怎么将程序中的数据通过文件存储到磁盘中 b.怎么在程序中使用保存在文件中的数据
"""
"""
第一步:打开文件
open(文件路径, 读写模式, encoding=文件编码方式) - 以指定方式打开指定文件,返回文件对象
1)文件路径 - 文件在计算机中的位置信息, 以字符串的形式提供值。
a. 绝对路径:文件在计算机中的全路径
b. 相对路径:. - 表示当前目录(当前代码文件所在的目录), ./可以省略
.. - 表示当前目录的上层目录
2)读写模式 - 设置打开文件后支持的是读操作还是写操作;设置操作数据的类型是字符串还是二进制
第一组值:
r - 只读
w - 只写;先清空原文件
a - 只写;保留原文件内容,在后面追加数据
r+/w+/a+ - 读写操作(可读可写)
第二组值:
t - 数据类型是字符串(t可以省略)
b - 数据类型是bytes
'r' == 'rt' == 'tr'
注意:如果是文本文件可以用t或者b的方式打开,如果是二进制文件只能以b的方式打开
3)encoding - 文件编码方式(打开的编码方式和文件的编码方式必须一致)
以b的方式打开文件的是encoding不能赋值
第二步:读文件、写文件
文件对象.read()
文件对象.write(数据)
第三步:关闭文件
文件对象.close()
"""
open(r'./images/test.txt')
open(r'./test.py')
open('test.py')
open('images/test.txt')
f = open('test.py', 'ab')
f.write('abc'.encode())
f.close()
读写操作
"""
1)
文件对象.read() - 从读写位置开始读到文件结尾(读写位置默认在文件开头)
文件对象.readline() - 从读写位置开始读到一行的结尾(只有在读文本文件的时候有效)
文件对象.readlines() - 一行一行的读,读完
2)
"""
f = open('test.py', encoding='utf-8')
result = f.read()
print(result)
print('--------------------------------------------------------')
f.seek(0)
print(f.read())
print('--------------------------------------------------------')
f.seek(0)
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print('===:', f.readline(), '====', sep='')
print('--------------------------------------------------------')
f.seek(0)
print(f.readlines())
f.close()
print('--------------------------------------------------------')
f = open('test.py', 'a', encoding='utf-8')
f.write('\nabc\n123\n456')
f.close()
数据存储操作
"""
第一步:确定需要持久化的数据(确定哪个数据在下一次运行程序的时候还要用)
第二步:创建文件保存数据初始值
第三步:在程序中需要这个数据的时候从文件中读数据
第四步:如果数据发生改变,要将最新的数据写回文件中
"""
"""
第1次运行程序打印: 1
第2次运行程序打印: 2
第3次运行程序打印: 3
"""
f = open('count.txt', 'rt', encoding='utf-8')
count = int(f.read())
count += 1
print(count)
f = open('count.txt', 'w', encoding='utf-8')
f.write(str(count))
"""
请输入学生姓名: 小明
小明 ['小明']
请输入学生姓名:小花
小明 小花 ['小明', '小花']
请输入学生姓名:q
(程序结束)
请输入学生姓名: 张三
小明 小花 张三 ['小明', '小花', '张三']
请输入学生姓名: 李四
小明 小花 张三 李四 ['小明', '小花', '张三', '李四']
请输入学生姓名:q
(程序结束)
"""
while True:
name = input('请输入学生姓名:')
if name == 'q':
break
f = open('students2.txt', encoding='utf-8')
all_student = eval(f.read())
all_student.append(name)
print(all_student)
f = open('students2.txt', 'w', encoding='utf-8')
f.write(str(all_student))
"""
如果以读的方式打开不存在的文件会报错;
如果以写的方式打开不存在的文件不会报错;
"""
f = open('test.txt', 'a+')
f.write('abc')
"""
文件对象 = open()
文件对象.read()/文件对象.write()
文件对象.close()
with open() as 文件对象:
文件对象.read()/文件对象.write()
"""
with open('test.txt', 'w') as f:
f.write('abc')
f.write('123')