Python文件读写的一些应该注意的特性

1.open()函数底层是指针实现的 并且只是一个指针 这个指针指向文章最开头(或者说就是光标位置) 

  这就意味着使用read()打开文件 无论多大 速度是没有区别的

2.open(‘file’,mode)里面的mode 只读方式有两种

  1是r 这种应该在后面注明编码格式 如encode=‘UTF-80’

  2是rb方式 rb方式就是二进制方式 也就是打开非文字文件时 也就是说 打开图片 打开视频文件等等 并且在网络传输中我们也不太能用UTF-8是不是?当然都是二进制了 

3.然后介绍一些w 写功能  这个功能还是挺强大的  只要给一个文件名就在当前路径下创建一个文件并写入

但是如果是已存在的文件 会被覆盖如果以文本方式写入的文件, 无需制定编码.

而以二进制文本写入时, 由于写入的内容要求为bytes,所以通过str.encode('charset')来返回bytes
那我想要增加内容怎么办呢 那就只有用a了
也就是mode=‘a’会在光标处(也就是文末)添加 相当于list的append
4.那我要是想一边读一边写呢 ?那就是r+ /r+b(以bytes类型)理解成read+一个功能 但是我在后面是默认是写

此处应该注意光标的位置 为什么这么说呢? For example:
 f = open('log',mode='r+',encoding='utf-8')
 print(f.read())
f.write("1234") f.close()

当我们不进行写操作 进行读操作时 光标 是从文末一直会移动到文尾的 那么也就是说 我先读后写 和先写后读 是有区别的 先写再读 会替换文章开头的数据 而先读再写 就是append的样子了

r+可读可写 所以就算不写入 也可以作为读 所以基本上大部分情况下 就是r+  

5.难道我们的光标只能在文章开头或者结尾嘛?当然不是

然后接下来就是调制光标了嘛

seek()函数直接可以确定位置

6.突然忘记有w+这个了 因为不太常用嘛

那w+有啥用咧 你写完能看一眼 就这样 不过w就是重新写一遍啊 那你看这一眼有啥用嘛

什么?你就是想看?

那你用seek(0)把光标调制到最前面 才能看到 

补充一下 seek函数里面的数字是字节数!不是字符!

但是read(3)就是读取三个字符!!!

为什么?因为光标写完以后到最后了呀! 请看第一条!

所以说灵活的运用光标位置 才是掌握Python文件读写的精髓哟!

加油少年

更新一个 重要的知识点 也就是 f.tell()  就是告诉你当前光标位置

有什么用呢 ?断点续传呀 传输文件的时候 没有一次性传输完成的呀 所以这个是必要的 下次再下载的时候就知道 已经下载到了什么位置了。





原文地址:https://www.cnblogs.com/dash-soap/p/9501854.html