zoukankan      html  css  js  c++  java
  • 文件读写

    文件打开模式有4种:
    1、w写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写,w+,写读模式,只要沾上w,肯定会清空原来的文件
    2、r读模式,只能读,不能写,而且文件必须存在,r+是读写模式,只要沾上r,文件必须得存在
    3、a追加模式,也是只能写,在文件的末尾添加内容,a+是可以读也可以写,读的时候,文件不存在,不会报错,但是由于a是追加模式,所以最开始文件指针就在最后面,要读的话,需要先把指针移到最前面:
    4、rb+、wb+,ab+,这种是二进制模式打开或者读取,一些音乐文件、图片等等
    注意:如果在打开的文件的时候,不指定模式,那就是读模式

    一.文件操作常用的方法
    1.seek方法移到文件指针:
    f = open('a.txt','a+',encoding='utf-8')
    f.seek(0)
    res=f.read()
    print(res)
    返回结果:

    距离是一份考卷

    测量相爱的誓言

    最后会不会实现

    我们为爱还在不学

    注意:当文件内容为汉字的时候,需要将字符编码改为utf-8,不然容易报错

    2.read方法,读所有的内容,返回的是一个字符串
    f = open('a.txt1','r+',encoding='utf-8')
    res=f.read()
    print(type(res)) #查看read方法返回内容的类型
    print(res)
    返回结果:
    <class 'str'>
    MLing
    niuniu
    zhang

    3.readlines方法,读所有的内容,返回的是一个列表
    f = open('a.txt1','r+',encoding='utf-8')
    res=f.readlines()
    print(type(res)) #查看readlines方法返回内容的类型
    print(res)
    返回结果:
    <class 'list'>
    ['MLing ', 'niuniu ', 'zhang']

    4.readline方法,一行一行读取,返回的是字符串
    f = open('a.txt1','r+',encoding='utf-8')
    res=f.readline()
    print(type(res)) #查看readline方法返回内容的类型
    print(res)
    返回结果:
    <class 'str'>
    MLing
    5.write方法,添加一个字符串
    f = open('a.txt1','a+')
    f.write('nihao') #添加一个字符串
    f.seek(0) #添加内容之后,指针会到最后一个,只有让指针定到最前面,后面才能读到值
    print(f.read())
    返回结果:
    nihao
    6.writelines方法,添加一个列表

    f = open('a.txt1','a+')
    f.writelines(['li', 'jia']) #添加一个列表
    f.seek(0) #添加内容之后,指针会到最后一个,只有让指针定到最前面,后面才能读到值
    print(f.read())
    返回结果:

      lijia

    二、文件对象循环

    直接循环文件对象的话,循环的是文件每一行的内容

    f = open('a.txt1','a+')
    f.seek(0)
    count = 0
    for i in f:
    print("第%s次是%s"%(count,i))
    count+=1
    输出结果:
    第0次是MLing

    第1次是zhangsn

    第2次是hanguang

    第3次是jiajia

    三、修改文件中的内容
    1.方法一:先清空在替换
    import os
    f = open('a.txt','a+',encoding='utf-8')
    f.seek(0) #使用a模式的时候,这个指针一定要有的噢
    fw=open('a.txt.new','w',encoding='utf-8')
    for line in f:
    new_line =line.replace('学','不学') #因为读取到为文件内容为字符串,所有内容替换需要用replace方法
    fw.write(new_line) #将改过的内容new_line放到fw文件里
    f.close() #文件操作结束之后,有打开的文件,对应就要有关闭
    f.close() #文件操作结束之后,有打开的文件,对应就要有关闭
    os.remove('a.txt') #删除文件
    os.rename('a.txt.new','a.txt')

    四、
    import time
    fw = open('python.txt','w',encoding='utf-8')
    fw.write('下周不上课!')
    fw.flush()#写完之后立马生效
    time.sleep(30) #30秒之后,结束运行程序
    fw.close()
    五、with方法,文件不再用的时候,就会自动给你关闭文件,不需要再每次使用close关闭文件
    with open('python.txt',encoding='utf-8') as fr:
        print(fr.read())
    可以同时打开多个文件:
    with open(re[1],'a+', encoding='utf-8') as f1,open(re[1]+'.new','w', encoding='utf-8') as f2:





    
    


  • 相关阅读:
    Django框架(二十三)-- Django rest_framework-视图组件
    Django框架 --序列化组件(serializer)
    Django框架(十六)-- 中间件、CSRF跨站请求伪造
    leetcode 之 两数之和
    vue中webpack相关的配置
    vue-cli3 初始化创建项目
    vue之模块化开发
    vue基础之常用方法
    凯哥带你用python撸算法之雪花算法
    docker数据卷之持久化操作
  • 原文地址:https://www.cnblogs.com/MLing/p/6918904.html
Copyright © 2011-2022 走看看