python_task_08

#1、通用文件copy工具实现
old_path=input('源文件路径: ')
new_path=input('目标文件路径: ')
with open(r'%s'%old_path,'rb')as f,\
	open(r'%s'%new_path,'wb')as t:
	for line in f:
		t.write(line)
#2、基于seek控制指针移动,测试r+、w+、a+模式下的读写内容

with open('user.txt','r+',encoding='utf-8')as f:
	f.seek(0,2)
	f.write('ceshi4:444')
	f.seek(0)
	data=f.read()
	print(data)

with open('black.txt','w+',encoding='utf-8')as f:
	f.write('ceshi1:111')
	f.seek(0)
	data=f.read()
	print(data)

with open('black.txt','a+',encoding='utf-8')as f:
	f.seek(0)
	data=f.read()
	print(data)
	f.seek(0,2)
	f.write('ceshi5:555')

#3、tail -f access.log程序实现
# 监测程序
import time
with open('access.log','ab')as f:
	f.seek(0,2)
	for line in f:
		if len(line) == o:
			time.sleep(0.5)
		else:
			print('line'.decode('utf-8'),end='')
# 写入程序
import time
for i in range(1000):
	with open('access.log','a',encoding='utf-8')as f:
		t = time.strftime('%Y-%m-%d %H:%M:%S')
		strvar = '收到转账%s亿元'%i

		msg = f'{t} {strvar}\n'
		print(msg)
#4、
# 4.1:编写用户登录接口
sign = True
while sign:
	username=input('请输入用户名: ').strip()
	password=input('请输入密码: ').strip()
	with open('user.txt','r',encoding='utf-8')as f:
		for line in f:
			name,pwd = line.strip().split(':')
			if username == name and password == pwd:
				print('登录成功')
				sign = False
				break
		else:
			print('用户名或密码错误')
# 4.2:编写程序实现用户注册后(注册到文件中),可以登录(登录信息来自于文件)
# 注册
sign = True
while sign:
	username = input('请输入用户名: ').strip()
	password = input('请输入密码: ').strip()
	password2 = input('请确认你的密码: ').strip()
	if password == password2:
		print('注册成功')
		with open('user.txt','a',encoding='utf-8')as f:
			msg = '%s:%s'%(username,password)
			f.write(msg)
		sign = False
		break
	else:
		print('2次密码输入不一致')
# 登录
sign = True
while sign:
	username = input('请输入用户名: ').strip()
	password = input('请输入密码: ').strip()
	with open('user.txt','r',encoding='utf-8')as f:
		for line in f:
			name,pwd=line.strip().split(':')
			if username == name and password == pwd:
				print('登录成功')
				sign = False
				break
		else:
			print('用户名或密码错误')

#5、下属两个案例的升级需求完成
# 示范1:注册功能
# name = input("your name: ").strip()
# 做合法性校验:
# 1、如果输入的用户名包含特殊字符^$&...让用户重新输入
# 2、如果输入的用户名已经存在也重新输入
# pwd = input("your password: ").strip()
# 做合法性校验:
# 1、密码长度
# 2、如果密码包含特殊字符则重新输入
# f.txt = open('user.txt',mode='at',encoding='utf-8')
# f.txt.write('%s:%s\n' %(name,pwd))
# f.txt.close()

# 示范2:登录功能
# inp_name = input("your name: ").strip()
# inp_pwd = input("your pwd: ").strip()
#
# f.txt = open('user.txt',mode='rt',encoding='utf-8')
# for line in f.txt:
#     user,pwd=line.strip('\n').split(':')
#     if inp_name == user and inp_pwd == pwd:
#         print('login successful')
#         break
# else:
#     print('user or password error')
#
# f.txt.close()
# 升级需求1:同一个账号输错三次则退出
# 升级需求2:同一个账号输错三次则,该账号则锁定10秒,即便程序被终止,仍然计时
def login():
	dic = {}
	t = []
	sign = True
	while sign:
		username = input('请输入用户名: ').strip()
		with open('user.txt','r',encoding='utf-8')as f:
			for line in f:
				name,pwd = line.strip().split(':')
				dic[name]=pwd
		if username in dic:
			print('您的用户名已存在,请重新输入')
			continue
		for x in range(33,48):
			t.append(chr(x))
		for i in t:
			if i in username:
				print('含有非法字符,请重新输入')
				break
		else:
			while sign:
				password=input('请输入密码:').strip()
				if len(password) > 4:
					print('密码长度超过4,请重新输入')
					continue
				for i in t:
					if i in password:
						print('含有非法字符,请重新输入')
						break
				else:
					print('注册成功')
					with open('user.txt','a',encoding='utf-8')as f:
						msg = "%s:%s\n"%(username,password)
						f.write(msg)
					sign = False
def register():
	login()
	import time
	# 存放账户
	accountlist = []
	# 存放密码
	pwdlist = []
	# 存放黑名单用户
	blacklist=[]

	sign = True
	while sign:
		username = input("请输入用户名:")

		# 1.获取用户名密码等数据
		with open("user.txt",mode="r+",encoding="utf-8")as fp:
			lst = fp.readlines()
			# 提取文件里的账号密码
			for i in lst:
				account,pwd = i.strip().split(":")
				accountlist.append(account)
				pwdlist.append(pwd)
		# 2.判断是否存在该用户
		if username in accountlist:

			# 读取黑名单用户
			with open('black.txt','r',encoding='utf-8')as f:
				for line in f:
					blacklist.append(line.strip())

			if username in blacklist:
				print('您的账户已锁定,请等待5分钟')
				time.sleep(300)

			num = accountlist.index(username)
			times = 0
			while times < 3:
				pwd = input("请输入您的密码:")
				if pwd == pwdlist[num]:
					print("登录成功")
					sign = False
					break
				else:
					print("密码错误,你还剩下%s次机会" % (2-times))
					# 3.账号输入3次锁定
					if times == 2:
						print("密码错误三次,账户已锁定,5min后解锁")
						with open('black.txt','a+',encoding='utf-8')as f:
							res = username + '\n'
							f.write(res)
						time.sleep(300)
						print("账户已解锁,请继续使用")
				times += 1
		else:
			print("该用户不存在")
register()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值