zoukankan      html  css  js  c++  java
  • 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()  就是告诉你当前光标位置

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





  • 相关阅读:
    pycharm的各种设置,配置
    python中文件路径的问题
    Pycharm使用的一些问题!!!
    networkx如何将图写到邻接矩阵里?
    networkX如何读取存储图的二进制.dat文件
    再次理解线性回归与梯度下降
    Python DataFrame 如何删除原来的索引,重新建立索引
    NetworkX初相识
    haproxy + keepalived + mycat 高可用与负载均衡集群配置 centos7
    otter+canal
  • 原文地址:https://www.cnblogs.com/dash-soap/p/9501854.html
Copyright © 2011-2022 走看看