Day16作业及默写
hashlib模块,写函数校验两个文件是否内容相同(如果这两个文件很大)
import hashlib
md5 = hashlib.md5()
md5.update(b'hello')
md5.update(b'world')
ret = md5.hexdigest()
print(ret)
md5 = hashlib.md5()
md5.update(b'helloworld')
ret = md5.hexdigest()
print(ret)
#对比文件一致性的时候还需要加盐?
# 一个文件的md5值和另一个文件的md5值是不是一样
#两个文件 为什么要加密去对比
#文件的一致性校验
#视频软件
# 下载完成之后 转转转 正在检测当前文件是否可用
# 这是一个损坏的文件 不能使用
import os
import hashlib
def file_md5(path):
filesize = os.path.getsize(path)
md5 = hashlib.md5()
with open(path,'rb') as f:
while filesize >= 4096:
content = f.read(4096)
md5.update(content)
filesize -= 4096
else:
content = f.read(filesize)
if content:
md5.update(content)
return md5.hexdigest()
def cmp_file(path1,path2):
return file_md5(path1) == file_md5(path2)
path1 = r'D:\s20\day18\视频\4.面向对象整理.mp4'
path2 = r'D:\s20\day18\视频\tmp.mp4'
ret = cmp_file(path1,path2)
print(ret)
import hashlib
def Check_Diff(file_pathI,file_pathII):
with open(file_pathI,mode='r',encoding='utf-8') as f1,\
open(file_pathII,mode='r',encoding='utf-8') as f2:
for lineI,lineII in zip(f1,f2):
SHAI = hashlib.sha256(lineI.encode('utf-8'))
SHAII = hashlib.sha256(lineII.encode('utf-8'))
if SHAI.hexdigest() != SHAII.hexdigest():
return '这两个文件不是同一个文件'
else:
return '这两个文件是同一个文件'
ret = Check_Diff('list.txt','list.txt')
print(ret)
hashlib做一个密文存储密码的注册登陆程序
import hashlib
def md5(username,password):
md5 = hashlib.md5(username[::-1].encode('utf-8'))
md5.update(password.encode('utf-8'))
return md5.hexdigest()
def get_line():
with open('userinfo', encoding='utf-8') as
for line in f:
user, pwd = line.strip().split(',')
yield user,pwd
def register():
flag = True
while flag:
username = input('user :')
password = input('passwd :')
for user,pwd in get_line():
if user == username:
print('您输入的用户名已经存在')
break
else:
flag = False
password = md5(username,password)
with open('userinfo',encoding='utf-8',mode='a') as f:
f.write('%s,%s\n'%(username,password))
def login():
username = input('user :')
password = input('passwd :')
for user,pwd in get_line():
if username == user and pwd == md5(username,password):
return True
ret = login()
if ret:
print('登陆成功')
import hashlib
def encrypt_action(username,password,action='login',encrypt_file='encrypt_file.txt'):
with open(encrypt_file,mode='a+',encoding='utf-8') as file:
userencrypt = hashlib.sha256(username.encode('utf-8'))
userencrypt.update(password.encode('utf-8'))
if action == 'register':
file.seek(0,0)
for line in file:
if line.strip() == userencrypt.hexdigest():
return '账号已经注册,请更换其他账号登陆.'
else:
file.write(str(userencrypt.hexdigest())+'\n')
return '用户注册成功'
elif action == 'login':
file.seek(0,0)
for line in file:
if line.strip() == userencrypt.hexdigest():
return '用户登陆成功'
else:
return '用户名或密码不对.'
else:
return 'Warning'
menu = '加密注册登陆程序'.center(20,'-') + '\n' +'''
1. 登陆系统
2. 注册账户
3. 退出程序
'''
exit_flag = 'False'
while exit_flag == 'False':
print(menu)
Choice = input('>>>').strip()
if Choice == '1':
username,password = input('UserName:').strip(),input('Password:').strip()
ret = encrypt_action(username,password)
print(ret)
elif Choice == '2':
username,password = input('UserName:').strip(),input('Password:').strip()
ret = encrypt_action(username,password,'register')
print(ret)
else:
exit_flag = 'True'
print('\n')
拼手气发红包函数

#怎么能第一个人和最后一个人能取到多少钱是平均概率
import random
def red_pac(money,num):
ret = random.sample(range(1,money*100),num-1)
ret.sort()
ret.insert(0,0)
ret.append(money*100)
for i in range(len(ret)-1):
value = ret[i+1] - ret[i]
yield value/100
g = red_pac(200,10)
for i in g:
print(i)
os模块,计算文件夹的总大小
- 这个文件夹里都是文件
- 这个文件夹里还有文件夹
import os
def GetFileSize(dirpath):
count_size = 0
for file in os.listdir(dirpath):
count_size += os.path.getsize(file)
return count_size
def bytes2human(n):
symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
prefix = {}
for i, s in enumerate(symbols):
prefix[s] = 1 << (i + 1) * 10
print(prefix)
for s in reversed(symbols):
if n >= prefix[s]:
value = float(n) / prefix[s]
return '%.1f%s' % (value,s)
return '%sB' % n
Size = GetFileSize('.')
ret = bytes2human(Size)
print(ret)
import os
def size(path):
num = 0
list_name = os.listdir(path)
for i in list_name:
file_name = os.path.join(path,i)
if os.path.isdir(file_name):
num1 = size(file_name)
num += num1
else:
num += os.path.getsize(file_name)
return num
print(size(os.path.abspath('.')))
计算当前月的1号的时间戳时间
import time
def MonthOne():
NowTime = time.strftime('%Y-%m',time.localtime(time.time()))
DayOne = time.strptime(NowTime+'-1','%Y-%m-%d')
return time.mktime(DayOne)
ret = MonthOne()
print(ret)
正则表达式练习
- 匹配整数或者小数(包括正数和负数)
- 匹配年月日日期 格式2018-12-6
- 匹配qq号
- 长度为8-10位的用户密码 : 包含数字字母下划线
- 匹配验证码:4位数字字母组成的
- 匹配邮箱地址
1. -?\d+(\.\d+)?
2. \d{1,4}-(1[0-2]|0?[1-9])-(3[01]|[12]\d|0?[1-9])
3. [1-9]\d{4,11}
4. \w{8,10}
5. [\dA-Za-z]{4}
6. [\w\-\.]+@([a-zA-Z\d\-]\.)+[a-zA-Z\d]{2,6}
Day16作业及默写的更多相关文章
- Day29作业及默写
作业: 1\ 默写 黏包协议 2\ 上传大文件(文件\视频\图片) 3\ 和你的同桌调通 从你的计算机上传一个视频到你同桌的电脑上 4\ 进阶 : 带上登录 Server #Server #!/usr ...
- Day20作业及默写
1.请使用C3算法计算出链接图中的继承顺序-Link 一 graph BT id1[A]-->id2[B] id2[B]-->id6[F] id6[F]-->id7[G] id1[A ...
- Day11作业及默写
1.写函数,传入n个数,返回字典{'max':最大值,'min':最小值} 例如:min_max(2,5,7,8,4) 返回:{'max':8,'min':2}(此题用到max(),min()内置函数 ...
- Day10作业及默写
1,继续整理函数相关知识点,写博客. 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) def func(*number): sum=0 for num in number: sum+=nu ...
- Day19作业及默写
三级菜单 menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车 ...
- Day14作业及默写
1.整理今天所学内容,整理知识点,整理博客. pass 2.画好流程图. pass 3.都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出): pass 4.用map来处理字符串列表,把列 ...
- Day13作业及默写
1. 整理今天的博客,写课上代码,整理流程图. 博客链接--博客园 2. 写一个函数完成三次登陆功能: 用户的用户名密码从一个文件register中取出. register文件包含多个用户名,密码,用 ...
- Day9作业及默写
1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func(obj): return obj[1::2] 3, ...
- Day8作业及默写
1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: 将原文件全部读出来并打印. with ...
随机推荐
- SQL SERVER pivot(行转列),unpivot(列转行)
[pivot]行转列:多行变一列 假设学生成绩表Score1 Name Subject Score 小张 语文 88 小花 数学 89 小张 数学 90 Name 语文 数学 小花 null 89 小 ...
- 串的模式匹配算法 ------ KMP算法
//KMP串的模式匹配算法 #include <stdio.h> #include <stdlib.h> #include <string.h> int* get_ ...
- 廖雪峰网站:学习python基础知识—list和tuple(二)
1.list """ Python内置的一种数据类型是列表:list. list是一种有序的集合,可以随时添加和删除其中的元素. """ c ...
- poj-2689-素数区间筛
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22420 Accepted: 5954 Descr ...
- Oracle DB 使用子查询来解决查询
• 定义子查询 • 描述子查询可以解决的问题类型 • 列出子查询的类型 • 编写单行和多行子查询 • 子查询:类型.语法和准则 • 单行子查询: – 子查询中的组函数 – 带有子查询的HAVING ...
- Node+Express的跨域访问控制问题:Access-Control-Allow-Origin
问题一:项目A通过Ajax访问项目B的接口,获取json数据,项目B采用Node+Express技术栈.项目A可能遇到跨域访问控制问题. 问题二:vue-resource 能够跨域,一般使用jsonp ...
- NOIP2015神奇的幻方
题目描述 幻方是一种很神奇的 N∗N 矩阵:它由数字1,2,3,⋯⋯,N×N 构成,且每行.每列及两条对角线上的数字之和都相同. 当 N 为奇数时,我们可以通过下方法构建一个幻方: 首先将 1 写在第 ...
- Oracle12c版本中未归档隐藏参数
In this post, I will give a list of all undocumented parameters in Oracle 12.1.0.1c. Here is a query ...
- 通过配置hosts.allow和hosts.deny文件允许或禁止ssh或telnet操作
1.登录主机,如果是普通账户先切换至root账号 su root 2.编缉/etc/hosts.allow文件 vi /etc/hosts.allow 允许内容 书写格式(改成自自需要的IP或IP段) ...
- 牛客网 PAT 算法历年真题 1002 :数字分类 (20)
1002 :数字分类 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一系列正整数,请按要求对数字 ...