标签:import 自带 alt 追踪 style 分享 进入 ini 假设
一般对于文件,二逼青年是先open再处理,结束后close;文艺青年则with open (文件名) as f:一顿操作
下面是简单文件操作,将文件1.text中的一些内容修改:
1 import os 2 3 # 改文件,将所有‘a‘改成1,‘s‘改成2 4 with open(‘1.text‘, ‘r‘,encoding=‘utf-8‘) as fr, 5 open(‘2.text‘,‘w‘,encoding=‘utf-8‘) as fw: 6 for i in fr: 7 if ‘a‘ in i: 8 i = i.replace(‘a‘,‘1‘) # 字符串替换是需要赋值的 9 if ‘s‘ in i: 10 i = i.replace(‘s‘,‘2‘) 11 fw.write(i) 12 13 os.rename(‘1.text‘,‘3.text‘) 14 os.rename(‘2.text‘,‘1.text‘) 15 os.remove(‘3.text‘)
为什么用with可以省略关闭的过程?
python中一切皆对象,open相当于是一个类,with open (文件名) as f 等同于(但是不同)f = open(文件名),可见open这个类中自带打开与关闭,即__enter__,__exit__
1 class Open: 2 def __init__(self, name): 3 self.name = name 4 5 def __enter__(self): 6 print("11111") 7 return self 8 9 # 可以在exit里面写清理功能,比如close 10 def __exit__(self, exc_type, exc_val, exc_tb): 11 # 没有意外情况下三个值是空,当with内部逻辑错误时,将跳过这个逻辑,进入exit,此时三个参数分别是异常类(名),异常值,以及追踪信息 12 print("22222222") 13 print(exc_type) 14 print(exc_val) 15 print(exc_tb) 16 return True # 将异常吞了,不爆红 17 18 19 with Open(‘hello.txt‘) as f: # 触发__enter__,拿到返回值给f,即f = Open(‘hello.txt‘).__enter__() 20 print(f) 21 print("假设一堆逻辑") 22 print("假设一堆逻辑") 23 print(aaaaaaaaaaaaaaaaaaaaaaaaaa) # 错误逻辑,直接触发exit,下面逻辑不能显示,即with语句结束 24 print("luoji") 25 print("luoji") 26 27 print("00000000000000000000000") # 如果没有return True这个也显示不了
标签:import 自带 alt 追踪 style 分享 进入 ini 假设
原文地址:https://www.cnblogs.com/maxiaonong/p/9498208.html