一、文件操作
1、文件读取
f = open("文件名/文件路径")
f.read() 得到的是一整个字符串
读取模式:mode="r" / mode="rb"
2、文件的写入
mode="w" 覆盖模式 / mode="a" 追加模式 / mode="x" 独创模式(同名文件会报错)
3、文件要记得关闭 f.close()
用 with open( "文件名/文件路径") as f:
上下文表达式 可以代替文件关闭 自动关闭文件
4、光标
##读取文件是根据光标的移动读取,读取一个字符,就把光标移动一个字符
##写入也是一样的。每写一个字符,就移动一个字符的光标
5、+ 同时具备可读可写
6、f.readlines() 读取每一行 放在列表中 每一行的内容就是一个列表的一个元素
二、异常捕获
格式:
try 要运行的有可能发生异常的代码: 代码 except 异常: 出现异常的时候要运行的代码,记录日志等
1、出现了异常,会让他按照事先规定的规则去执行对应的操作:记录错误日志
2、一旦try当中出现异常,立即跳到except子语句,try剩下的代码不会再执行
异常捕获方式:
1) try...except...
2)try...except Exception as e
3)try...except ValueError...
4)try...except(indexError,KeyError) 分组
5)try...except...finally...
抛出异常方式:raise
附带代码:
# 文件处理
# 打开文件读取数据
f = open("demo.txt", encoding="utf-8") # 打开文件demo.txt
data = f.read() # 读取文件内容
print(data)
f.close() # 关闭文件
# 写入文件 在 w 模式下,如果之前没有这个文件,将会创建新文件
# 如果之前已经存在同名文件,使用mode='w'模式会覆盖之前的文件内容,可以使用mode='a' 追加模式
f = open("file.txt", mode="a", encoding="utf-8")
f.write("我最棒啦")
f.close()
# readlines() 读取每一行 存放到列表中 每一行内容就是一个列表的一个元素
# read() 得到的是整个一个字符串
f = open('file.txt')
data = f.readlines()
for line in data:
print(line.strip())
# with 语句 上下文表达式 上下文管理器 节省关闭文件的操作
with open("file.txt") as f:
f.read()
# 1)异常捕获
ls = ["yuz"]
try:
print(ls[3])
except:
print("出现异常...")
print("hello world!")
# 2)异常捕获
a = 1
b = 0
ls = ["yuz"]
try:
print(a / b)
print(ls[2])
except Exception as err:
print("出现异常:{}".format(err))
print("running...")
# 3)异常捕获
a = 3
b = 0
ls = ["yuz"]
try:
print(a / b)
print(ls[3])
except IndexError as err:
print("出现异常:{}".format(err))
except ZeroDivisionError as err:
print("出现异常:{}".format(err))
finally:
print("hello world!")
# raise
def join_team(age, gender):
if age > 22:
raise ValueError("age must be 小于 22")
print("可以加入足球队!")
join_team(23, '女')
作业:
1. 异常捕获的语法是什么样的? 请列举你会的错误类型。 2. 输入用户的体重身高,计算 bmi, (规则前面作业有) 考虑异常情况 3.编写如下程序 优化去生鲜超市买橘子程序 a.收银员输入橘子的价格,单位:元/斤 b.收银员输入用户购买橘子的重量,单位:斤 c.计算并且 输出 付款金额 新需求: d.使用捕获异常的方式,来处理用户输入无效数据的情况
上期答案:
# 简答题 # 1、什么是全局变量? # ## 在函数体外面的变量 # 2、什么是局部变量? # ## 在函数体内部的变量 # 特例:global # 3、函数内部如何修改全局变量(如何声明全局变量 )? # c = 5 # def add(a, b): # global c # c -= 3 # return a + b + c # # print(add(3, 5)) # 4、写出已经学过的所有python关键字,分别写出用途? # import keyword # print(keyword.kwlist) # ['False', 'None', 'True', 'and', 'as', 'assert','async', # 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', # 'else', 'except', 'finally', 'for', 'from', 'global', 'if', # 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', # 'raise', 'return', 'try', 'while', 'with', 'yield'] # False/True 判断bool值 # None 无返回内容时,打印None # and/in/not/or 放在判断语句中,获取bool值 # elif/else/if 条件判断 # for/while 循环 # break/continue/pass 停止循环/跳出本次循环/占坑 # def/return 定义函数/函数返回值;停止函数 # global 声明全局变量 # import 引入模块 # 简答题 # # 写出你接触过的内置函数,并说明他们的作用。 # # input()/print()/type()/format() # # int()/float()/str()/bool()/list()/set()/dict()/tuple() # # min()/max()/len()/sorted()/lst.sort()/enumerate() # # range()/eval() # .编写如下程序 # 有以下数据来自于一个嵌套字典的列表(可自定义这个列表),例如: # person_info = [{"name":"yuze", "age": 18, "gender": "男", "hobby": "假正经", "motto": "I am yours"} , .... 其他] # 创建一个txt文本文件,来添加数据 # # a.第一行添加如下内容: # name,age,gender,hobby,motto # # b.从第二行开始,每行添加具体用户信息,例如: # yuze,17,男,假正经, I am yours # cainiao,18,女,看书,Lemon is best! # def user_info(person_info, filename): # file = open(filename, mode="w+", encoding="utf-8") # for key in person_info[0]: # file.write(key) # file.write(" ") # # file.write("\n") # for i in range(len(person_info)): # for value in person_info[i].values(): # file.write(value) # file.write(" ") # file.write("\n") # # file.close() # # person_info = [{"name": "yuze", "age": 17, "gender": "男", "hobby": "假正经", "motto": "I am yours"}, {"name": "cainiao", "age": "18", "gender": "女", "hobby": "看书", "motto": "Lemon is best!"}] # user_info(person_info, "user_info.txt") # # 老师 # ### 获取每一行数据,列表转化成行的字符串形式;[{}, {}]==>name,yuz # def get_value_lines(info): # lines = "" # for person in info: # line = [] # # for e in person.values(): # line.append(str(e)) # # line_str = ','.join(line) + '\n' # lines += line_str # return lines # # # print(get_value_lines(person_info)) # # # def main(): # with open("user.txt", "w+") as f: # f.write("name,age,gender,hobby,motto\n") # # data = get_value_lines(person_info) # with open("user.txt", "a", encoding="utf-8") as f: # f.write(data) # # # main() # # 编写如下程序 # # 有两行数据,存放在txt文件里面(手动建立文件,并添加如下数据): # # url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456 # # url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000 # # 请利用上课所学知识,把txt里面的两行内容,取出然后返回如下格式的数据:(可定义函数) # # [{'url':'/futureloan/mvc/api/member/register','mobile':'18866668888','pwd':'123456'}, # # {'url':'/futureloan/mvc/api/member/recharge','mobile':'18866668888','amount':'1000'}] # def txt_ls(filename): # file = open(filename, "r") # results = file.read() # result = results.split("\n") # # ls = [] # for res in result: # re = res.split("@") # dic = {} # for r in re: # end = r.split(":") # dic[end[0]] = end[1] # ls.append(dic) # # return ls # # # print(txt_ls("info.txt")) # # 老师 # def convent_to_dict(line): # """字符串转化成 字典""" # infos = line.split("@") # info_dict = {} # for info in infos: # info_list = info.split(":") # info_dict[info_list[0]] = info_list[1] # return info_dict # # # f = open("demo.txt", encoding="utf-8") # # lines = f.readlines() # # lines = f.read().split("\n") # # new_lines = [] # for line in lines: # new = convent_to_dict(line.strip()) # new_lines.append(new) # # print(new_lines) # # 附带:重点重点重点!!!!! # # 列表转化成字符串;字符串转换成列表 ls = ["name", "age", "favor"] s = ",".join(ls) print(s) lst = s.split(",") print(lst)