python学习笔记十二:常用系统模块和文件操作

常用系统模块和文件操作

一、time模块

1.时间戳
用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差(单位是秒)来表示时间的方式就是时间戳

注:格林威治时间和北京时间有8个小时的时差

4个字节(时间戳存储时间)
16个字节(用字符串存储时间)

1.time.time() -   获取当前时间
print(time.time())      # 1627611760.6106899
# 2.
# time.localtime()  -   获取当前时间的本地时间,返回结构体时间
# time.localtime(时间戳)   -   将时间戳对应的时间转换成本地时间
t1 = time.localtime()
print(t1.tm_year,t1.tm_mday)

print(time.localtime(0))
# 3.time.sleep(时间)  -   程序休眠指定时间,单位秒
# time,sleep(2)

4.结构体时间转字符串时间

time.strftime(时间格式,结构体时间) - 结构体时间转字符串时间

"""
%Y  -   年
%m -   月
%d  -   日
%H  -   时(24小时)
%I  -   时(12小时)
%M  -   分
%S  -   秒
%p  -   AM、PM
%a  -   星期英文单词缩写
%A  -   星期英文单词全拼
%b  -   月份英文缩写
%B  -   月份英文全拼
"""
result = time.strftime('%Y年%m月',t1)
print(result)

# result = time.strftime('%月')

5.将字符串时间转换成结构体时间

time.strptime(字符串时间,时间格式)

t3 = time.strptime('2010-10-2','%Y-%m-%d')
print(t3)

6.将字符串时间转换为时间戳(先将字符串时间转换成结构体时间)

result = time.mktime(t3)
print(result)

二、datetime模块

from datetime import datetime,timedelta

1.datetime类型 - 处理包含年月日时分秒的时间

(1)创建datetime时间对象

datetime(year,month,day,hour=0,minute=0,second=0)

t1 = datetime(2010,10,2)
print(t1)       # 2010-10-02 00:00:00

t2 = datetime(2011,9,30,minute=25)
print(t2)  
# (2)获取时间属性
# 时间对象.year、时间对象.month、...
print(t2.month)

# (3)获取当前时间
t3 = data.now()
print(t3)

# (4)将datetime转换成结构体时间
t4 = t3.timetuple()
print(t4)

# (5)将datetime转换成字符串时间
st5 = t3.strftime('%Y年%m月%d日 %a')
print(st5)      # 2021年07月30日 Fri

# (6)将字符串时间转换成datetime
str6 = '2003-7-1'
t5 = datetime.strptime(str6,'%Y-%m-%d')
print(t5)       # 2003-07-01 00:00:00

2.timedelta - 主要用于时间的加减操作

t6 = t5 + timedelta(days=45)
print(t6)       # 2003-08-15 00:00:00

t7 = t5 - timedelta(hours=8)
print(t7)       # 2003-06-30 16:00:00

三、hashlib模块

1.hash加密的特点

hash加密算法主要有:md5和shaxxx
a.不可逆(通过原数据加密后(产生的摘要)无法还原)
b.相同的数据通过相同的算法产生摘要(密文)是一样的
c.不同大小的数据在使用相同的算法产生的摘要的长度一致

2.使用hashlib产生数据的摘要

# 1.根据算法创建hash对象
hash = hashlib.md5()

# 2.添加数据
# hash对象.update(二进制数据)
pw = '123456'
hash.update(pw.encode())

# f = open('images/test.txt','rb')
# hash.update(f.read())

# 3.获取摘要
result = hash.hexdigest()
print(result)

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())

四、文件操作

1.数据的存储

程序中保存的数据默认都是存储在运行内存中,运行内存中的数据在程序结束的时候都会被释放。
如果希望程序运行过程中产生的数据在程序结束后不被销毁,就需要将数据存储在磁盘中。

将数据存储到磁盘过程叫做数据持久化、数据本地化。
数据持久化的基本原理 - 将数据通过文件存储到磁盘中。

2.文件操作(操作文件内容)

文件操作主要解决两个问题:a.怎么将程序中的数据通过文件存储到磁盘中 b.怎么在程序中使用保存在文件中的数据

3.文件操作基本步骤

第一步:打开文件
open(文件路径,读写模式,encoding=文件编码方式) - 以指定方式打开指定文件,返回文件对象
(1)文件路径 - 文件在计算机中的位置信息,以字符串的形式提供值。
a.绝对路径:文件在计算机中的全路径
b.相对路径:. - 表示当前目录(当前代码文件所在的目录)
… - 表示当前目录的上层目录

(2)读写模式 - 设置打开文件后支持的是读操作还是写操作;设置操作数据的类型是字符串还是二进制
第一组值:
r - 只读
w - 只写;先清空原文件
a - 只写;保留原文件的内容,在后面追加数据
第二组值:
t - 数据类型是字符串
b - 数据类型是bytes

        'r' == 'rt' == 'tr'

注意:如果文本文件可以用t或者b的方式打开,如果是二进制文件只能以b的方式打开
(3)encoding - 文件编码方式(打开的编码方式和文件本身的编码方式必须一致)
以b的方式打开文件的是encoding不能赋值
第二步:读文件、写文件
文件对象.read()
文件对象.write(数据)

第三步:关闭文件,
文件对象.close()

# 参数1:路径
open(r'E:\images\test.txt')
open('./images/test.txt')

# 参数2:读写模式
# (1)r - 只读
# f = open('test.py','r')
# f.read()
# f.write('abc')      # io.UnsupportedOperation: not writable

# (2)w - 只写;会清空原文件
# f = open('test.py','w')
# f.write('abc')
# f.read()        # io.UnsupportedOperation: not readable

# (3)a - 只写;会保留原文件内容
# f = open('test.py','a')
# f.write('abc')
# f.read()        # io.UnsupportedOperation: not readable

# (4)t - 读写数据的类型是字符串
# f = open('test.py','rt')
# result = f.read()
# print(type(result))     # <class 'str'>

五、读写操作

1.读操作

(1)文件对象.read() - 从读写位置开始读到文件结尾(读写位置默认在文件开头)
文件对象.readline() - 从读写位置开始读到一行的结尾(只有在读文本文件的时候有效)

六、数据持久化

数据持久化的的基本步骤:

第一步:确定需要持久化的数据(确定哪个数据在下一次运行程序的时候还要用)
第二步:创建文件保存数据初始值
第三步:在程序中需要这个数据的时候从文件中读数据
第四步:如果数据发生改变,要将最新的数据写回文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值