zoukankan      html  css  js  c++  java
  • Python文件读写之r+/w+/a+

    读模式 r 打开不存在的文件会报错、不能写;如不指定模式则默认是r
    写模式 w 打开不存在的文件会,会新建一个文件;打开存在的文件会先清空后覆盖原有文件;不能读
    追加模式 a 打开不存在的文件会,会新建一个文件;不能读
    读写模式 r+ 能写,打开不存在的文件会报错
    写读模式 w+ 能读,但是读不到内容,因为w先把文件内容清空了
    追加读模式 a+ 能读,但读不到内容,因为文件指针默认在最后一行,可用seek移动文件指针位置

    1. r+读写模式

     
    # r+读写模式
    f=open('test.txt','r+')
    res=f.write('000
    ')
    res1=f.read()
    print(res1)
    
    # 原test.txt内容如下:
    # 123456
    # 678
    # 789
    
    #print输出读取的内容如下:
    # 6
    # 678
    # 789
    
    #现test.txt内容如下:
    # 000
    # 6
    # 678
    # 789
    
    ##解释说明:
    #1. r+新写入的内容会覆盖原文件中的内容,写入几个字符,则覆盖几个字符
    #2. r+会从文件开头开始进行文件读写,所以每次写入时,都会从一开始(第一行)进行
    #3. 
    换行符相当于两个字符
    #4. r+写完后,文件指针会停留在新写入的字符后面,所以在read时,只read新写入字符后面的那些内容
    #5. 综上所述,新写入的000
    会覆盖原文件中的前5个字符,且read后显示的内容不包含新写入的内容
     

    2. w+写读模式

     
    # w+写读模式
    f=open('test.txt','w+')
    res=f.write('000
    ')
    res1=f.read()
    print(res1)
    
    # 原test.txt内容如下:
    # 123456
    # 678
    # 789
    
    #print输出读取的内容如下:#空,能读,但是读不到内容,因为w+先把文件内容清空了
    
    
    #现test.txt内容如下:
    # 000
    # 
    
    ##解释说明:
    #1. w+会先清空然后覆盖原文件内容
    #2. w+会先将文件里的所有内容都清空,所以读不到任何内容
     

    3. a+追加读模式

     
    # a+读写模式
    f=open('test.txt','a+')
    res=f.write('000
    ')
    res1=f.read()
    print(res1)
    
    # 原test.txt内容如下:
    # 123456
    # 678
    # 789
    
    #print输出读取的内容如下:#空,能读,但读不到内容,因为文件指针默认在最后一行,用seek移动文件指针位置
    
    
    
    #现test.txt内容如下:
    # 123456
    # 678
    # 78900
    #  
    
    ##解释说明:
    #1. a+因为文件指针默认在最后一行字符后,所以写入新字符时,新写入的字符会显示在最后
    #2. a+能读,但因为文件指针默认在最后一行,所以读不到内容,显示空
    #3. a+可以用seek()移动文件指针位置进行文件的读取
     

    3-1:a+中seek()的运用:在读取文件时,可指定下标从而实现从第几位开始读取文件内容;

    注:只针对读取文件,写文件还是只能从最后开始写

     
    f=open('test.txt','a+')
    f.seek(5)  #此处的seek不起作用,因为对写文件不起作用
    res=f.write('hh
    ')
    f.seek(2)  #从下标是2的字符开始读取文件
    res1=f.read()
    print(res1)
    
    # 原test.txt内容如下:
    # 123456
    # 678
    # 789
    
    #print输出读取的内容如下:
    # 3456
    # 678
    # 789hh
    #  
    
    #现test.txt内容如下:
    # 123456
    # 678
    # 789hh
    #  
     
  • 相关阅读:
    让程序调用运行linux shell命令
    纯C的字符串问题
    Linux的打包和解压缩命令
    ubuntu安装mosquitto-1.4.5
    无Teamview授权,使用Teamview方式
    有效利用家用宽带,动态域名服务(DDNS)
    pfx格式证书转成nginx可用的证书
    iis文件上传限制
    vue脚手架使用
    netcore中执行linux命令
  • 原文地址:https://www.cnblogs.com/blueteer/p/10019795.html
Copyright © 2011-2022 走看看