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:





    
    


  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/MLing/p/6918904.html
Copyright © 2011-2022 走看看