zoukankan      html  css  js  c++  java
  • 文件操作

    文件操作

    文件的操作方法
    模式 含义
    r 文本只读模式
    rb 二进制模式 这种方法是用来传输或存储,不给人看的
    r+ 读写模式,只要有r,那么文件必须存在
    rb+ 二进制读写模式
    w 只写模式,不能读,用w模式打开一个已经存在的文件,如果有内容会清空,重新写
    wb 以二进制方式打开,只能写文件,如果不存在,则创建
    w+ 读写模式,先读后写,只要有w,会清空原来的文件内容
    wb+ 二进制写读模式
    a 追加模式,也能写,在文件的末尾添加内容
    ab 二进制追加模式
    a+ 追加模式,如果文件不存在,则创建文件,如果存在,则在末尾追加
    ab+ 追读写二进制模式,从文件顶部读取文件,从文件底部添加内容,不存在则创建

    读操作

    f = open('文件名','r',encoding='utf-8')
    data = f.read()
    print(data)

    以二进制模式打开

    f = open('文件名','rb',encoding='utf-8')
    data = f.read()
    print(data)
    文件智能检测的文件编码

    不知道文件是以什么方式存储的可以用chardet来进行检测
    使用第三方软件包chardet
    chardet语法
    先安装chardet
    pip3 install chardet

    imoprt chardet
    f = open('文件名,'rb')
    data = f.read()
    data2 = chardet.detect(data)
    print(data2)

    写操作

    f = open('文件名','w',encdoing='utf-8')
    f.write('内容')
    f.close

    以二进制写入

    f = open('文件名','wb',encdoing='utf-8')
    f.write('内容')
    f.close

    追加

    f = open('文件名','a',encdoing='utf-8')
    f.write('内容')
    f.close

    文件的其它操作方式

       def fileno(self, *args, **kwargs): # real signature unknown
            返回文件句柄在内核中的索引值,以后做IO多路复用时可以用到
    
        def flush(self, *args, **kwargs): # real signature unknown
            把文件从内存buffer里强制刷新到硬盘
    
        def readable(self, *args, **kwargs): # real signature unknown
            判断是否可读
    
        def readline(self, *args, **kwargs): # real signature unknown
            只读一行,遇到
     or 
    为止
    
        def seek(self, *args, **kwargs): # real signature unknown
            把操作文件的光标移到指定位置
            *注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
            如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
            但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节
    
        def seekable(self, *args, **kwargs): # real signature unknown
            判断文件是否可进行seek操作
    
        def tell(self, *args, **kwargs): # real signature unknown
            返回当前文件操作光标位置 
    
        def truncate(self, *args, **kwargs): # real signature unknown
            按指定长度截断文件
            *指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。
    
        def writable(self, *args, **kwargs): # real signature unknown
            判断文件是否可写
  • 相关阅读:
    206. 反转链表
    JAVA 排序总结
    Codeforces Round #674 (Div. 3)
    【BM模板】
    【 lca 】最近公共祖先
    【 欧拉函数 】GCD
    【 裴蜀定理 】Border
    【调和级数 && 欧拉常数】 Harmonic Number
    【Lucas定理】组合数取模算法
    【 最短路 && 思维 】Escape Plan
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/9041712.html
Copyright © 2011-2022 走看看