码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作

时间:2018-08-18 19:36:12      阅读:116      评论:0      收藏:0      [点我收藏+]

标签: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)
View Code

为什么用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这个也显示不了
View Code

 

文件操作

标签:import   自带   alt   追踪   style   分享   进入   ini   假设   

原文地址:https://www.cnblogs.com/maxiaonong/p/9498208.html

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