码迷,mamicode.com
首页 > 编程语言 > 详细

Python小练:(五:异常处理)

时间:2020-01-17 10:07:48      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:不能   print   not   read   utf-8   alt   操作   finally   创建文件   

  

# 1、实现一个文件复制器函数,通过给函数传入一个路径,复制该路径下面所有的文件(目录不用复制)到当前目录,
# 要求:如果传路径不存在,不能报错

准备复制的目录:下面有两个目录和三个文本文件,我们这次复制的就是这三个文本文件。(附文本文件内容)
我们要把【操作的目录】下的文本文件复制到【Python_异常捕获】目录下

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 


代码:

技术图片

 

 

 

运行结果:

技术图片

 

 

 

技术图片

 

 

 技术图片

 

 

 

 

 

 

 

 

# 2、改善上节课扩展作业的注册程序,
# 打开文件的读取数据的时候,如果文件不存在会报错,
# 请通过try-except来捕获这个错误,进行处理,让注册程序可以继续运行。
执行代码(可直接执行的):
def registered(file):
try: # 读取文件内容时校验是否存在该文件
with open(file,‘r‘,encoding=‘utf-8‘) as fb:
user_info = eval(fb.read())
except FileNotFoundError as FN: # 如果不存在该文件则 创建文件,然后进行注册流程
print("---------------------文件不存在,尝试新建文件---------------------")
with open(file,‘w‘,encoding=‘utf-8‘) as fb1: # 新建一个文件,写入内容,无内容会报错
fb1.write("[]")
with open(file,‘r‘,encoding=‘utf-8‘) as fb2: # 然后再读取出来
user_info = eval(fb2.read())
user_name = [] # 用于存放读取出的用户名
for i in user_info: # 变量读取出的数据
user_name.append(i[‘user‘]) # 将读取到的用户名添加到user_name,用于判断是否已注册
print("---------------------创建文件成功---------------------")
while True:
username = input("请输入你的用户名:")
if username in user_name:
print("该用户名已被注册,请重新输入!")
else:
while True:
pwd1 = input("请输入你的密码:")
pwd2 = input("请再次输入密码:")
if pwd2 != pwd1:
print("两次密码输入不一致,请重新输入密码!")
else:
print("注册成功!")
user_info.append({"user": username, "pwd": pwd2}) # 将新注册的用户名和密码谈价到读取出的user_info中
with open(file, ‘w‘, encoding=‘utf-8‘) as fb: # 覆盖写入全部数据
fb.write(str(user_info))
break
break
print(FN) # 打印出报错信息
else: # 如果判断存在该文件,则直接进行注册流程
print("---------------------文件已存在,正在进入注册流程---------------------")
user_name = []
for i in user_info:
user_name.append(i[‘user‘])
while True:
username = input("请输入你的用户名:")
if username in user_name:
print("该用户名已被注册,请重新输入!")
else:
while True:
pwd1 = input("请输入你的密码:")
pwd2 = input("请再次输入密码:")
if pwd2 != pwd1:
print("两次密码输入不一致,请重新输入密码!")
else:
print("注册成功!")
user_info.append({"user":username,"pwd":pwd2})
with open(file, ‘w‘, encoding=‘utf-8‘) as fb:
fb.write(str(user_info))
break
break
finally: # 无论执行的是 except 代码块还是 else 代码块,都会执行的代码
print(">>>>>>全场最佳<<<<<<")
registered(‘user_info.txt‘)





3、石头剪刀布游戏,用户输入时,如果输入非数字会引发异常,请通过异常捕获来处理这个问题

执行代码:

技术图片

 

 

运行结果:

技术图片

Python小练:(五:异常处理)

标签:不能   print   not   read   utf-8   alt   操作   finally   创建文件   

原文地址:https://www.cnblogs.com/Super-Treasure/p/12203792.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!