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

    文件操作:

      r  读

      w 写 只能覆盖写,先清空后写入

      a 在文件文本末尾追加  

      r+ 读写   必须先读

      w+ 写读  

      a+追加写读

      b 使用吧的时候不能写编码集,b操作的是字节

      rb 读取非文本文件

      wb 可以不指定打开文件编码,但是写文件的时必须将字符串转化utf-8的bytes数据

      ab   

      字节不能添加编码集,写mp3,mp4,mp5,图像,非文本

      read()  默认全部读完,可以指定读几个

      readline 读取行,  默认跟 (换行), (回车)

    路径:推荐使用相对路径

      相对路径:从磁盘跟目录开始一直到文件名

      绝对路径: 同一个文件夹下的文件,相对于当前这个程序所在的文件夹而言     

      如果早同一个文件夹中,则相对路径就是这个文件名,如果在上一层文件夹,则要 ../

    循环读取

    f= open("../t.txt",mode="r",encoding="utf-8")

    for line in f:

      print(line.strip())

      f.flush () #刷新

      f.close()   #关闭

    光标的操作:

    seek(0)   #光标移动到开头

    seek(0,2)  #将光标移动到结尾

    seek(3)  单个参数是字节数

    seek(0,1) #两个参数就是表示光标调整到当前位置

    seek(0,0)  #两个参数就是表示光标调整到开始位置
    seek(0,2)   #两个参数就是表示光标调整到末尾位置

    tell()  可以找到光标的位置

    truncate() 截断文件

    f=open("t.txt",mode="w",encoding="utf-8")

    f.write("哈哈")

    f.seek(3)

    f.truncate()   #删掉光标后面的所有内容

    f.close()

    ###########坑##########

    在r+模式下,如果读取了内容,不论读取内容多少,光标显示的是多少,再写入或者操作文件的时候都在结尾进行操作

    ############坑##########

    修改文件:

    import  os

    with open("t.txt",mode="r",encoding="utf-8")as f,

      open ("s.txt",mode="w",encoding="utf-8")as f1: 

        content=f.read()

      new_content=content.replace("冰糖葫芦","鸭梨")

      f2.write("s.txt")

    os.remove(t.txt)      #删除源文件

    os.rename(s.txt)    #重新命名文件

    弊端:一次将所有内容进行读取,内存溢出,

    解决方案: 一行一行的读取和操作

    import  os

    with open("t.txt",mode="r",encoding="utf-8")as f,

      open ("s.txt",mode="w",encoding="utf-8")as f1: 

      for i in f:

        s.txt_line=line.replace("鸭梨","冰糖葫芦")

        f1.write(s.txt_line)

    os.remove("t.txt")

    os.rename("s.txt",t.txt)

      

  • 相关阅读:
    noip模拟赛#38
    noip模拟赛#45
    noip模拟赛#15
    noip模拟赛#14
    noip模拟赛
    rp++
    bzoj2127: happiness
    bzoj3209:3209: 花神的数论题
    10.1 plan
    FFT
  • 原文地址:https://www.cnblogs.com/lilei1996/p/9877761.html
Copyright © 2011-2022 走看看