1、讲博客、用户关系数据持久化
import sys
import pickle
# users保存所有注册成功的用户
users = []
def menu1():
print("欢迎登录我们的用户管理系统")
print("\t\t 1、用户注册")
print("\t\t 2、用户登录")
print("\t\t 3、退出系统")
def user_exists(username):
for u in users:
if u.get("username") == username:
print("对不起,该用户已经存在,请重新注册")
return u
return None
def reg_check(username, password, confirm_password):
# 数据校验
# 用户名称不能为空
if username == None or len(username) == 0:
print("对不起,用户为空")
return False
# 用户名称不能重复
u = user_exists(username)
if u != None:
return False
# 密码长度不能少于3位
if len(password) < 3:
print("对不起,密码长度不能少于3位")
return False
# 两次密码不一致
if password != confirm_password:
print("两次密码不一致")
return False
return True
def reg():
while True:
# 接受参数
print("欢迎进入到用户注册页面")
username = input("请输入用户名称:")
password = input("请输入用户密码:")
confirm_password = input("请再次确认密码:")
# 数据校验
if not reg_check(username, password, confirm_password):
continue
# 最后如何保存用户名称和密码
# 加密密码
md5_pass = my_utils.md5_by_hashlib(password)
user = {
"username": username, "password": md5_pass}
users.append(user)
print("用户注册成功,请登录")
break
def login():
print("欢迎进入到用户登录页面")
username = input("请输入用户名称:")
password = input("请输入用户密码:")
# 判断用户名和密码是否存在于users
user = user_exists(username)
if user == None:
print("登录失败,该用户名不存在!!!")
else:
# 判断密码
md5_pass = my_utils.md5_by_hashlib(password)
if user.get("password") == md5_pass:
print("恭喜您,{},登录成功".format(username))
else:
print("登录失败,密码错误!!!")
def user_selected(choice):
if choice == "1":
reg()
elif choice == "2":
login()
elif choice == "3":
sys.exit()
else:
print("输入有误,请重新选择")
def serialization(ls):
pickle.dump(ls, open("E:\练习.txt", mode="wb")) # 持久化数据,将ls放在路径下
pickle.load(open("E:\练习.txt", mode="br")) # 反序列化读取数据
while True:
menu1()
choice = input("请选择您的操作:")
user_selected(choice)
serialization(choice)
拷贝文件(一定要会),在拷贝基础上 + 遍历磁盘基础上 ==> 实现磁盘复制
from os import path
import uuid
import sys
import os
def file(url):
files=os.listdir(url)
for i in files :
path=os.path.join(url,i)
if os.path.isfile(path) :
print(path)
elif os.path.isdir(path) :
#如果是文件夹,递归遍历
file(path)
if len(sys.argv) <2 :
print("必须传递参数")
else:
p=sys.argv[1]
file(p)
file("E:\jhj\IT作业\Linux私房菜")
def copy(file1, file2):
while True:
content = file1.read(2048)
if content != b'':
file2.write(content)
else:
break
def copy_by_bytes(src, dest):
if not path.isfile(src):
print("对不起,路径有误")
return
file1 = open(src, "br")
# 注意:不建议直接将所有数据丢读取到内存中,很容易出现内存不够用,导致蓝屏现象
# file2.write(file1.read())
# 判断dest是不是文件夹
if path.isfile(dest):
file2 = open(dest, "bw")
copy(file1, file2)
elif path.isdir(dest):
filename = src[src.rindex("\\") + 1:]
p = path.join(dest, str(uuid.uuid4()) + filename)
file2 = open(p, "bw")
copy(file1, file2)
print("读取成功")
file1.close()
file2.close()
copy_by_bytes("E:\jhj\IT作业\Linux私房菜","E:\IT笔记\开发")