今日总结02

  今天详细学习了文件操作的更多内容,补充了昨天没有学到的x模式,x模式是与a,r,w并列的一种模式,是只能写不可读,不存在则创建,存在即报错。与只读模式(w)不同的只是w模式存在会清空重新写入而已。然后是t和b模式中的b模式,b模式表示存储的是什么样的二进制取出来的就是什么样的二进制,比如rb模式,读的是硬盘中的文件加假如存储的文件是utf-8编码格式的,那么通过f.read()读取到的也是utf-8编码的二进制,只不过是在输出到编辑器上是经过处理的十六进制,并且存入去除的全是以字节(Bytes)为单位进行存储,也正是因此在写入到文件时必须先解码成编码格式然后再存入到硬盘中。到此文件的各种模式已经大致学完。

  接着是文件修改的方法共有两种。在计算机中修改文件并不只是修改硬盘中的内容,因为如果只是通过f.write()这个操作表示的是写入到了硬盘上,而且硬盘上只能覆盖而不能修改。所以想要修改文件就只能将文件从硬盘中写入到内存中,然后更改想要修改的位置,然后在重新保存。所以第一种方法就是首先打开想要修改的文件,导入到内存中通过更改内存中所保存的内容,并赋值给新的变量,第二步就是关闭打开的文件重新以写入的模式打开该文件,然后将刚刚保存的变量写入到该文件中,就此文件也就重新修改完成了,这也是普通文本编辑器进行修改的原理。第二种方法则是同时打开两个文件,一个是待修改的文件(以读的方式)另一个则是新的空文件(以写的方式),然后直接将修改后的数据读入新的文件,同时使用操作将原文件删除再将新的文件改为原文件的名字。两种方法各有优缺点具体问题具体分析。

  文件读写数据的方法,之前只学习了f.read()这一种方法,这种会从头读到尾直接将所有数据都读出来。然后还有其他的方法f.readline()表示一次读一行,以换行符为标志;f.readlines()与f.read()一致,都是一次将数据全部取到内存中,若内容较大可能会导致内存泄漏;还有两种循环读取文件的操作,一个是以行为单位来取(for line in f),另一个则是通过数据大小来去取文件(f.read(1024))// 然后是写数据,f.write()在以t模式写的时候必须写入的是字符串,是使用引号引起来的,但若在b模式下写入字符串时必须使用编码,比如:f.write(‘发电设备’.encode('gbk') 这样就表示是以gbk模式存入到硬盘中(还有两种形式 【bytes('上啊',encoding='utf-8')】,【b'1111aaa1\n'】(这种是只能只有英文与数字时才行的));接着是f.writelines()就是传入一个列表,列表中的每一个元素都会存入到文件中。

  然后是控制文件指针的移动,指针移动的单位都是以Bytes(字节)为单位,只有在t模式下read(n),n代表的是字符个数。所以指针的移动一般是在b模式进行的。移动的方法f.seek(n,模式),n指的是字节的个数,模式则分为三种,分别为0,1,2。模式0代表的是参照物是文件的开头,模式1代表的是参照物是当前指针的位置,模式2代表的是文件的末尾位置所以n一般为复数,要倒着进行移动。其中0模式可以在t模式下进行,而1,2模式只允许在b模式下进行。实时监控日志文件就可以通过此来进行操作。

  还有一些对于文件的其他了解操作。

  最后还有一些关于函数的基本定义与语法,函数的关键字(def),变量名(一般是动词),参数(可有可无,一切照具体情况),然后是函数的操作(功能代码),和返回值(return 也是可有可无)。

关于函数的好处,优势等等。

  over!!!                                                                                                                                                                             17:25

                                                                                   2022/7/19

  

posted @ 2022-07-19 17:26  hahakk  阅读(44)  评论(0)    收藏  举报