标签:open 一个 操作系统 orm sts 数据加密 use java 结构
time : 和时间相关
封装了获取时间戳和字符串的时间段一些方法。
import time
#获取时间戳
#时间戳 ::从时间元年(1970 1 1 00:00:00)到现在经过的秒数。
# print(time.time())#1594641761.2810633
# #获取格式化时间对象:是九个字段组成的。
# #默认参数是当前系统时间的时间戳。
# print(time.gmtime())#
# print(time.localtime())
# print(time.gmtime(1))#时间元年过一秒后,对应的时间对象
#
# #事件对象 -> 时间戳
# t1 = time.localtime()#时间对象
# t2 = time.mktime(t1)#转化为对应的时间戳
# print(t2)
# print(time.time())
#格式化时间对象和字符串之间的转换
s = time.strftime(‘year: %Y %m %d %H:%M:%S‘)
print(s)
#把时间字符串转换成时间对象
time_obj = time.strptime(‘2020 02 20‘,‘%Y %m %d‘)
print(time_obj)
time 模块三大对象之间的转换关系:
? 其他方法: time.sleep(x) : 休眠x 秒。
datetime : 日期时间相关
包含了和日期时间相关的类,主要有:
获取以上类型的对象,主要作用是和时间段进行数学运算。
timedelta可以和以下三个类进行数学运算:
? 练习:
? 显示当前日期前三天是什么时间.
? 显示任意一年的二月份有多少天.
from datetime import datetime
s = datetime.now()#datetime中含有datetime 类,通过from datetime import datetime导入的才是datetime这个类。##datetime.datetime.now()
import datetime
td = datetime.timedelta(days=3)
res = s - td
print(res)
#普通算法:根据年份计算是否是闰年 是:29天,否:28天
#用datetime 模块
#首先创建出指定年份的3月1号,然后让它往前走一天
import datetime
year = int(input(‘输入年份:‘))
#创建出指定年份的date对象
d = datetime.date(year, 3, 1)
#创建一天的时间段
td = datetime.timedelta(days=1)
res = d - td
print(res.day)
os 模块 和操作系统的模块,主要是文件删除,目录删除,重命名等操作
import os
#和文件操作相关,重命名,删除
#os.rename(‘www666.txt‘,‘666.txt‘)
#os.remove(‘666‘)
#删除目录,必须是空目录
# os.removedirs(‘aa‘)
#
# #使用shutil 模块可以删除带内容的目录
# import shutil
# shutil.rmtree(‘aa‘)
#和路径相关的操作,被封装到另一个子模块中:os.path
# res = os.path.dirname(r‘d:/aaa/bbb/ccc/a.txt‘)#不判断路径是否存在
# print(res)#d:/aaa/bbb/ccc
#
# #获取文件名
# res = os.path.basename(r‘d:/aaa/bbb/ccc/a.txt‘)
# print(res)
#
# #把路径中的路径名和文件名切分开,结果是元祖。
# res = os.path.split(r‘d:/aaa/bbb/ccc/a.txt‘)
# print(res)
#
# #拼接路径
# path = os.path.join(‘d:\\‘,‘aaa‘,‘bbb‘,‘ccc‘,‘a.txt‘)
# print(path)
#
# #如果是/开头的路径,默认在当下盘符
# res =os.path.abspath(r‘/a/b/x‘)
# #如果不是以/开头,默认当前路径
# res1 = os.path.abspath(r‘a/b/x‘)
# print(res1)
# 判断
print(os.path.isabs(‘a.txt‘))
print(os.path.isdir(‘d:/aaaa.txt‘)) # 文件不存在.False
print(os.path.exists(‘d:/a.txt‘))
print(os.path.isfile(‘d:/asssss.txt‘))# 文件不存在.False
sys 模块
主要是两个方面:
例如:有a.py 内容如下:
import sys
print()print(‘脚本名称:‘,sys.argv[0])
print(‘第一个参数:‘,sys.argv[1])
print(‘第二个参数:‘,sys.argv[2])
脚本方式运行:
python a.py hell world
json 模块
JavaScript Object Notation :java脚本兑现标记语言。
已经成为一种简单的数据交换格式
? 序列化:将其他数据格式转化成json 字符串的过程
? 反序列化: 将json 字符串转换其他数据类型的过程
? 涉及到的方法:
注意:
内存中的数据:结构化的数据
磁盘上的数据:线性数据。
序列化比喻:
pickle模块
python 专用的序列化模块
和json 的方法一致
区别在于:
json:
1.不是所有的数据类型都可以序列化,结果是字符串。
2.不能多次对同一个文件序列化。
3.json数据可以跨语言
pickle:
1.所有的python序列都能序列化,结果是字节串。
2.可以多次对同一个文件序列化
3.不能跨语言
hashlib模块
封装一些用于加密的类
md5(),……
加密的目的:用于判断和验证,而并非解密。
特点:
#注册,登录程序
def get_md5(username,passwd):
m = hashlib.md5()
m.update(username.encode(‘utf-8‘))
m.update(username.encode(‘utf-8‘))
return m.hexdigets()
def register(usname,passwd):
#加密
res = get_md5(username,passwd)
#写入文件
with open(‘login‘,mode=‘at‘,encoding=‘utf-8‘) as f:
f.write(res)
f.write(‘\n‘)
def login(username,passwd):
#获取当前登录信息的加密结果
res = get_md5(username,passwd)
#读文件,和其中的数据进行对比
with open(‘login‘,encoding=‘utf-8‘,mode=‘rt‘) as f:
for line in f:
if res ==line.strip():
return True
else:
return False
while True:
op = int(input(‘1.注册 2.登录 3.退出‘))
if op == 1:
username = input(‘输入用户名: ‘)
passwd = input(‘输入密码: ‘)
register(username,passwd)
elif op ==2 :
username = input("输入用户名:")
passwd = input("输入密码:")
res = login(username,passwd)
if res:
print(‘登录成功‘)
else:
print(‘登录失败 ‘)
elif op == 3:
break
不同的加密对象,结果长度不同,长度越长,越耗时.常用的是md5.
常用模块介绍 time datetime os sys hashlib json pickle collections
标签:open 一个 操作系统 orm sts 数据加密 use java 结构
原文地址:https://www.cnblogs.com/zhaoxinblog/p/13336304.html