' T* z: b' y2 t- S文件资源泄露其实是一个很重要的问题. 因为文件使用完之后一定要关闭,打开文件其实是在申请一定的系统资源, 不再使用文件的时候,资源应及时释放,否则就可能造成文件资源的泄漏, 进一步导致其他大部分的代码无法顺利打开,正是因为一个系统的资源是有限的,因此一个程序能打开的文件个数也是有限的.0 K r* |& M) A( h9 d1 d
6 }) v5 ?+ P W& f7 s/ Apython当中有一个很重要的机制,垃圾回收机制GC 自动的将不使用的变量给释放掉.5 [% j- A% W$ P
( Q# R) \2 Z1 I3 Q6 }( B
虽然Python给了我们一个后手,让我们一定程度的避免了上述问题,但是也不能完全依赖自动释放机制,因为制动释放机制不一定及时,它需要判定是否为垃圾,那这需要以一定时间周期,如果在这周期内我就直接打开了所有文件,导致文件泄露了,所以不应该完全依赖他,而应该有关闭文件操作的意识。 $ u& y+ u: q; _% ^/ S7 h. \& K1 f" T% f+ V5 I, y) Z
讲讲具体操作,写:1.先打开open('路径 ','w或者a')取决于之前它们俩的区别 2.变量.write('内容 ') 3.变量.close()如果文件对象已经关闭了,那就意味着系统和该文件相关的内存资源已经释放了,若强行写则会抛异常. , [5 B: g# P# g* b 4 g9 B6 Y# v& X读:1.先打开open('路径',' r')2.变量.read(数字)这个数字表示多少数字的字符(不是字节哦)注意中文和英文相似,在计算机中都是使用数字来表示字符的, 哪个数字对应哪个汉字常见的版本有:GBK UTF8这两种编码方式.在哪里看呢?在文本记事本右下角有编码方式,如果没有的话,那就从菜单,选择文件,选择另存于就可以看到编码方式了. 读的编码方式,应与文件的编码方式一致.系统默认编码方式为GBK,UTF8是比GBK使用更广泛的编码方式.上述已经讲了如何对编码方式进行更改 也就是主动调下open的第3个参数encoding=' UTF8'这个也就是关键字参数.而open的前两个参数表示在什么路径下进行怎样的操作,这就是位置参数 0 F) B9 ]% }% \3 V- o( n( d 6 ?0 W W% C# G7 Q9 f2.更常见的需求是按行来读取的,最简单的办法直接for循环.for 变量 in 对象.注意打印的函数print,在末尾会自带一个斜杠n,若不想要它自带的斜杠,则可以自己设定想要末尾是什么,通过print( ,end=' 自定义')这也就是一个关键字参数。而文本记事本中也会每行的末尾也会自带一个斜杠n. 2 n) z$ V" p# o. ^! j 7 L# E4 t) C' Z5 A1 r$ j6 o A3.还可以使用readlines方法,直接把整个文件所有内容都读出来,按照行组织的一个列表里 ' O+ I8 B3 `6 W ) f* h1 W0 ~7 r- g7 u6 K% Y注意我上述所有说的方法,一定要记住这里的方法并不是语文上的方法,而是计算机里面的方法,这是要明确说明对象才能使用的。0 N# ]5 r( k1 U$ i9 H% q3 q
/ O( T9 `/ m5 S0 _" p9 O, a! t
上下文管理器:为防止未释放资源,而系统自带帮忙释放。体现在当with对应的代码块结束,就会执行对象的关闭。with open(跟上述一样 )as 对象:会自动帮对象释放资源,所以以后直接用with搭配open来打开文件. * A* |- r$ e, v5 c5 A/ `; _: G# P# m———————————————— 0 d: f5 b: U* b* s* Y" E ; k4 F, @1 X- L7 V1 A 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 : V& k' V* B) X1 {5 } b& Z- y9 V8 L- G7 ^
原文链接:https://blog.csdn.net/2301_81874719/article/details/138212331 ) h' e0 b6 ?# H( J9 u" K$ l$ O& r4 q6 W/ b& N( m! E1 Y4 [