文件操作

文件操作:

  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)

  

原文地址:https://www.cnblogs.com/lilei1996/p/9877761.html