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

    1、打开文件

      f =  open(文件名,打开模式,encoding="utf-8")  =======>打开文件,  选择操作模式,以及打开的解码模式并赋值给f

    f = open("wjm","r")   只读

    f = open("wjm","w")   只写   没有就创建   有就 先清空原文件

    f = open("wjm","x")       没有就创建     如果文件存在就报错,不存在就创建并可以写内容

    f = open("wjm","a")   没有就创建    存在就写   追加文件内容

    r+    可读写    用seek   可在任意位置写

    w+   清空  再写

    x+      可读  可写

    a+   可读可写   但是写的永远在最后

    ########   f = open("wjm","ab")    操作模式加b之后 就是以字节类型读取

    以常规utf-8读取

    f = open("wjm","a")

    f.write("虞智渊")

    f.close()

    以字节读取

    f = open("wjm","ab")

    f.write(bytes("虞智渊",encoding ="utf-8")

    f.close()

    #######

    date = f.read(1)   读取第一个字符            如果没用加b  读取的时候是按字符去读取的

    ###########

    f.seek(1)   主动把指针调整到指定的位置   并且写的话会覆盖后面的内容    

    不管是中文还是什么,都是以一个字节为单位去读取,会把中文变成乱码

    ######  

    f.tell()  当前指针所在的位置======》永远是以字节为单位去计算的

    2、操作文件

    通过源码查看功能

    read()   无参数   读全部     ;有参数    1、有b 按字节         2、无b  按字符

    tell()    获取当前指针位置    按字节操作

    seek(22)   跳转到指定位置      按字节操作

    write()    写数据   以覆盖的模式   打开有b   写字节 (可以自己转码去操作)   无b  写 字符

    close()   关闭

    fileno()    文件的描述符

    flush()   强行刷新   中间刷新  不用等程序结束 就把写入的内容加进去

    readable()   判断是否可读   返回的是bool值

    readline()   仅读取一行   f.readline(3)   读取第三行

    truncate()   截断数据    把前面的保留 后面的清空    truncate(3)  指针位置后面 ( 第几个字符)的清空

           迭代for 循环文件对象,  循环的是每一行

              f = oper()

                for line in f:

    3、关闭文件

    1#    f.close()

    2#    with  oper(文件名)  as   f:         代码结束 会自动关闭文件

                pass

        with  open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2:       可以同时单开多个文件

             pass

    这样的好处是可以对两个文件同时操作

    将B文件的前十行 写入A文件

     with  open("wjm1",“r”,"utf-8") as f1, open("wjm2"“w”,"utf-8") as f2: 

      times = 0

      for line in f1:

        time+=1

        if times <=10:

          f2.write(line)

        else:

          break

    将a文件中的ycj 替换成yuzy

    with  open("wjm1",“r”,"utf-8") as f1,open("wjm2"“w”,"utf-8") as f2: 

             for line in f1:                  读取每一行

        rep_str=ling.replace("ycj","yuzy")      每一行操作 替换   

        f2.write(rep_str)       将替换后的写入新文件 

        f2.close()             关闭

  • 相关阅读:
    proguard-rules.pro、混淆、导jar包
    百度地图相关开发
    开发apicloud模块遇到的几个梗
    Android相关概念
    file-downloader相关问题
    Android 线程
    Android Studio Tip of the Day
    NAudio的使用说明
    IT回忆录-2
    IT回忆录-1
  • 原文地址:https://www.cnblogs.com/ychj/p/9460174.html
Copyright © 2011-2022 走看看