python磁盘拷贝练习

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

    # 密码长度不能少于3if 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笔记\开发")

python磁盘拷贝练习_第1张图片
python磁盘拷贝练习_第2张图片

你可能感兴趣的:(python练习,python)