文件处理

此文仅做学习用

打开文件

文件处理_第1张图片

读取文件

文件处理_第2张图片

read([size]):如果文件长度超过size,那么只读取size长度的部分

readlines([size])是读取完缓冲buffer的所有字节

注意一个缓存:

 io.DEFAULT_BUFFER_SIZE

8192


还有一种方法是使用迭代器:


文件处理_第3张图片


文件处理_第4张图片


他的截图是:


文件处理_第5张图片

那么迭代器有什么好处呢?

首先是把文件传给迭代器,不是把文件导到内存中,而是没有用lens读取一行的时候他自动读取一行。所以使用迭代器可以在不消耗内存的同时遍历整个文件。后面就会知道把文件放在缓存中读取与放入迭代器读取的区别。


写入文件


文件处理_第6张图片

对象可以是字符串,字符串组成的元组,字符串所组成的列表

注意参数必须是字符串组成的序列!

还有要注意,写入的时候,Linux本身有个写缓存的机制,如果不主动调用close()或者flush函数,他是不会写到磁盘文件上的。关闭的时候才会系统调用,才会写进去磁盘里


文件处理_第7张图片


文件处理_第8张图片


文件处理_第9张图片

注意第2点,同步到磁盘后,再写入的如果还没到写缓存的容量,那么内容还是会留在写缓存中。


文件处理_第10张图片


文件处理_第11张图片

注意,文件的字节数在调用了close()函数后变大了,因为写缓存里的内容都传到了磁盘中。


文件处理_第12张图片

EOL出现的原因是引号没有成对出现,f.然后点tab会出现这个对象可以使用的方法


文件处理_第13张图片


文件处理_第14张图片

注意啊,w只允许写入,r只允许读,那么以这些方式打开的话,你就不能读/写!

w+,打开一个文件先写后读。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

r+,可读写文件。【可读;可写;可追加】

注意若以追加方式打开文件,就会在文件结尾追加新的内容

a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

文件处理_第15张图片

注意若以追加方式打开文件,就会在文件结尾追加新的内容

a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。



文件处理_第16张图片

要注意close之后就读不了了。


那为什么需要二进制的方式呢,因为像读取图片这类信息,普通打开是打开文本,读不了信息,二进制打开就能读取图片的长宽。


文件关闭


文件处理_第17张图片

然后他做了一个实验,证明了打开超过1024就会报错,所以打开了文件记得关闭。

python的问题:


文件处理_第18张图片


文件处理_第19张图片


文件处理_第20张图片


文件处理_第21张图片

然后把指针指回去

文件处理_第22张图片


那么如何使指针指到结尾呢


文件处理_第23张图片

如何使指针相对于当前位置移动呢


文件处理_第24张图片

错误情况(指针越界):


文件处理_第25张图片

文件属性:


文件处理_第26张图片

例子:


文件处理_第27张图片

f.encoding回车后没有值,证明是ASCLL码编码

查看文件所有的属性:



文件处理_第28张图片


文件处理_第29张图片


文件处理_第30张图片


文件处理_第31张图片

你可能感兴趣的:(文件处理)