文件操作:
# w 写入模式 如文文件不存在,就创建文件如文件存在,则清空文件 (不可读取)
# r 只读模式 文件不存在的时候报错 (不可写入)
# a 追加写入模式 不清空之前文件,直接在最后位置添加新的内容 不存在则创建
# x 写入模式 文件存在会报错,不存在则创建
# b 以二进制读取文件
# + 可读写模式 r+,w+,x+,a+,这几种模式还遵循了r,w,a,x的基本原则。
#插入 写入模式是覆盖模式
# 光标的位置seek ,定位insert,
#字节,windows为gbk编码, python字符串为unicode
一:文件读写的普通操作
-
f=open('test.txt','w') #打开文件,w 写入模式,如文文件不存在,就创建文件。如文件存在,则清空文件
f.write('python是最好的语言') # 写入内容,放在缓存里了,但没有进入磁盘
f.flush() #将缓存的写入磁盘
f.close()
二:上下文管理器
-
with open('test.txt','w') as f: #结束后自动关闭文件
f.write('python是最好的语言') # 写入内容,放在缓存里了,但没有进入磁盘
f.flush() #将缓存的写入磁盘
-
class GeneratorContextManager: def __init__(self, func): # func must be a generator self.gen = func('mysql') def __enter__(self): return self.gen.send(None) def __exit__(self, exc_type, exc_val, exc_tb): """这三个参数是发生异常时,捕获的异常数据""" if exc_type is None: next(self.gen) # 执行yield之后的命令,并结束🔚 else: self.gen.throw(exc_type, exc_val, exc_tb) def func(name): for i in range(3): print(i) yield i print(f"之后") print(f"包括第二次yield之前,也就是0过了就是1")
with GeneratorContextManager(func): print('sssss')
>>>
0 sssss 之后 包括第二次yield之前,也就是0过了就是1 1
with GeneratorContextManager(func): print('sssss') raise Exception('oh') # 模拟用户异常
>>>0 sssss Exception: oh
异常捕获:
one: try
try:
a=input('输入数字:')
new_a=int(a)+1
print(new_a)
except Exception:
print('error')
>>>输入数字:a
error
>>>输入数字:10
11
two: assert 断言
def ces():
a=input('输入数字:')
assert a.isdigit()==True,'error100' #True正常运行代码,False执行后面的字符串
new_a=int(a)+1
print(new_a)
three: raise
def ff(n):
if n>1:
raise Exception('你大于1就是你的错',n)
print('有种运行我') #不会运行
return None