python--文件操作(with、文件和路径)

一.文件操作
.close()作用:关闭流,防止流阻塞。(一定要写!!!)
#1.不安全代码,理由:close()方法可能失效,关闭不上

f = open(""gj.txt",encoding="utf-8")
print(f.read())
print(1/0)
f.close()

#2.逻辑正确,但是代码出现冗余

my = open("gj.txt",encoding="utf-8")
try:
		print(my.read())
		print(1/0)
except:
		pass
finally:
		my.close()

#3.等价于#2.

with open("gj.txt",encoding="utf-8") as  my:
		print(my.read())
		print(1/0)

二.with:
1.作用:资源释放(如:文件使用后会自动关闭;线程中锁的自动获取和释放等。)
2.工作原理:
(1)紧跟with后面的语句被求值后,返回对象的" __ enter __ () “方法被调用,这个方法的返回值将被赋值给as后面的变量。
(2)当with后面的代码块全部被执行完后,将调用前面返回对象的” __ exit __ () "方法。

with工作原理代码如下:

class demo():           #定义一个demo()类
		def __enter__(self):
    		print("进入enter方法")
    		return "你好"
		def __exit__(self, exc_type, exc_val, exc_tb):
   			print("进入exit方法")
    		print("----",exc_type)          # exc_type: 错误的类型
    		print("----",exc_val)           # exc_val: 错误类型对应的值
    		print("----",exc_tb)            # exc_tb: 代码中错误发生的位置
def test():
		return demo()

with test() as t:
		print(t)

python--文件操作(with、文件和路径)_第1张图片
执行结果:
python--文件操作(with、文件和路径)_第2张图片
第一步先 执行with后面的语句,在执行test()方法后,返回demo()类的对象;
调用demo()类中的__enter__()方法,在接收 __ enter __() 方法后,赋值给t并打印。
第二步在执行完全部方法后,调用 __ exit __ () 方法,释放资源。

with总结:
实际上,在with后面的代码块抛出异常时,exit()方法会被执行。开发库时,清理资源,关闭资源等操作,都可以放在exit()方法中。
总之,with-as 表达式极大地简化了每次写finally的工作,这对代码的优雅性是有极大的帮助的,这也是python语言优雅的一个原因。
with还可以一次性的打开多个文件,如下所示:
with open(“a.txt”) as f1,open(“b.txt”) as f2:
do something

三.文件和路径:
1.fileinput:好处一次可以打开所有文件
1)用fileinput操作文件的作用:
fileinput可以同时读一个或者多个文件中的内容进行迭代、遍历等操作。该模块的input()方法有点类似文件的readlines()方法,区别是前者只是迭代一个对象,每次只生成一行,而后者是一次性读取所有行,当遇到大文件时,无疑前者更有效率。
2)fileinput的常用可选参数:
(1)inplace:用于决定print输出到哪。若inplace = 0,print 则输出到屏幕(即标准输出);若inplace = 1,则把print结果写到文件。默认情况下inplace = 0。
(2)backup:指定文件的扩展名,如.bak,若备份文件存在,则覆盖。
2.fileinput模块中常用的函数:
input(): 返回能够用于迭代 一行或多个文件中所有行的对象
filename(): 返回当前文件的名称
lineno(): 返回当前读取的行的数量
isfirstline(): 返回当前文件行是否为文件的第一行
filelineno(): 返回当前读取行在文件中的行数

python--文件操作(with、文件和路径)_第3张图片
执行结果:
python--文件操作(with、文件和路径)_第4张图片

python--文件操作(with、文件和路径)_第5张图片
执行结果:
python--文件操作(with、文件和路径)_第6张图片

3.合并
python--文件操作(with、文件和路径)_第7张图片

执行结果:
python--文件操作(with、文件和路径)_第8张图片
#.rstrip():作用:去空格和换行符

python--文件操作(with、文件和路径)_第9张图片
执行结果:

python--文件操作(with、文件和路径)_第10张图片
拆分
文件复制
文件加密

四.乱码解码:

读取文件有两种方式:字节、字符
出现乱码一般是以字符的方式读取,为防止乱码采用字节方式读取

python--文件操作(with、文件和路径)_第11张图片
执行结果:

python--文件操作(with、文件和路径)_第12张图片
采用utf-8解码
python--文件操作(with、文件和路径)_第13张图片

执行结果:
python--文件操作(with、文件和路径)_第14张图片

你可能感兴趣的:(笔记)