Python常用系统模块和数据持久化操作

常用系统模块和数据持久化操作

一、常用系统模块

os模块

​ os.getcwd() - 获取当前工作目录

​ os.listdir(‘./…’) - 获取指定文件夹中所有文件的名称

​ os.path.abspath(‘./…’) - 返回绝对路径

time模块
import time

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

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

# 1.time.time()
print(time.time())          # 1627611720.2288313

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

# 3.time.sleep(时间)  -   程序休眠指定时间,单位/秒
# time.sleep(1)
print('+++++++++++++++++++++')

2.

​ %Y - 年
​ %m - 月
​ %d - 日
​ %H - 时(24小时制)
​ %I - 时(12小时制)
​ %M - 分
​ %S - 秒
​ %p - AM、PM
​ %a - 星期英文单词缩写
​ %A - 星期英文单词全拼
​ %b - 月份英文缩写
​ %B - 月份英文全拼

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

# XX年XX月XX日  XX:XX:XX
print(time.strftime('%Y年%m月%d日  %H:%M:%S', time.localtime()))
# XX-XX-XX  XX:XX:XX
print(time.strftime('%Y-%m-%d  %H:%M:%S', time.localtime()))

# 5.将字符串时间转换成结构体时间
# time.strptime(字符串时间,时间格式)
print(time.strptime('2010-10-02', '%Y-%m-%d'))
t1 = time.strptime('2010-10-02', '%Y-%m-%d')
print(f'星期{t1.tm_wday + 1}')

# 6.将字符串时间转换成时间戳
# time.mktime(结构体时间)  -   将结构体时间转换成时间戳
print(time.mktime(t1))
import datetime
import time
from datetime import datetime, timedelta

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

# 1)创建datetime时间对象
# datetime(year,month,day,hour=0,minutes=0,second=0)
t1 = datetime(2010, 10, 2)
print(t1)           # 2010-10-02 00:00:00

t2 = datetime(2011, 9, 30, 11, 15, 30)
print(t2)           # 2011-09-30 11:15:30
# 2)获取时间属性
# 时间对象.year、时间对象.month.......
print(t1.year)
print(t2.hour)

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

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

# 5)将datetime转换成字符串时间
st5 = t3.strftime('%Y年%m月%d日 %a')
print(st5)
# 将字符串转换成datetime
str6 = '2003-7-1'
t5 = datetime.strptime(str6, '%Y-%m-%d')
print(t5)

# 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

t8 = t5 + timedelta(days=1, hours=5, minutes=15)
print(t8)           # 2003-07-02 05:15:00
hashlib
import hashlib

hashlib模块 - 用于生成数据的hash摘要

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

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

# 1.根据算法创建hash对象(hashlib.算法名())
hash = hashlib.md5()
# 2.添加数据    -   hash对象.update(二进制数据)
pw = '123456'
hash.update(pw.encode())
# 3.获取摘要
result = hash.hexdigest()
print(result)

Python二进制数据类型 - bytes
​ 字符串和bytes的相互转换
​ 1)str -> bytes
​ 方法一:bytes(字符串, ‘utf-8’)
​ 方法二:b’字符串’
​ 方法三:字符串.encode()
​ 2)bytes -> str
​ 方法一:str(二进制数据,‘utf-8’)
​ 方法二:二进制.decode()

二、文件操作

1.数据的存储

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

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

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

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

3.文件操作的基本步骤

​ 第一步:打开文件
​ open(文件路径,读写模式,encoding=文件编码方式) - 以指定的方式打开指定文件,返回文件对象
​ 1)文件路径 - 文件在计算机中的位置信息,以字符串的形式提供值。
​ a.绝对路径:文件在计算机中的全路径
​ b.相对路径:. - 表示当前目录(当前代码文件所在的目录),’./'可以省略
​ … - 表示当前目录的上层目录
​ 2)读写模式 - 设置打开文件后支持的是读操作还是写操作;设置文件操作数据的类型是字符串还是二进制
​ 第一组值:
​ r - 读操作,只读
​ w - 写操作,只写:打开时先清空原文件内容
​ a - 只写:保留原文件内容,直接在原数据的后面添加数据
​ 第二组值:
​ t - 数据类型是字符串(t可以省略)
​ b - 数据类型是二进制(bytes)
​ 注意:如果是文本文件可以用t或者b的方式打开,如果是二进制文件(图片、视频、音频、pdf等)只能以b的方式打开

​ 3)encoding - 文件编码方式(打开的编码方式和文件本身的编码方式必须一致)
​ 以b的方式打开文件时,encoding不能赋值
​ 第二步:读文件、写文件
​ 文件对象.read()
​ 文件对象.write(数据)

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

三、数据持久化操作

持久化步骤

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

d()
​ 文件对象.write(数据)

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

三、数据持久化操作

持久化步骤

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值