此文仅做学习用
打开文件
读取文件
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码编码
查看文件所有的属性: