文件处理

此文仅做学习用

打开文件

读取文件

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

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

注意一个缓存:

 io.DEFAULT_BUFFER_SIZE

8192


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




他的截图是:


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

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


写入文件


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

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

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




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



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


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



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

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

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

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

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

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

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



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


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


文件关闭


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

python的问题:





然后把指针指回去


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


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


错误情况(指针越界):


文件属性:


例子:


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

查看文件所有的属性:






最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容