文件操作

Posted maxiaonong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。

一般对于文件,二逼青年是先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

 

以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

代码片段 - Golang 实现集合操作

Apollo Codegen 没有找到生成代码的操作或片段

VSCode自定义代码片段——.vue文件的模板

操作栏标签片段中的片段?