文件的增删改查

  • 只读写法:
1 f = open("yesterday","r",encoding="utf-8")#只读模式,只能读,不能写,将文件全部写到内存显示,大文件下不适合使用
2 data = f.read()
3 print(data)
f.close()#打开文件后,记得关闭文件
  • 只写写法:
1 f = open("yesterday","w",encoding="utf-8")#只写模式,只能写,不能读,若没有文件存在,则生成yesterday名称的txt文件;若文件存在,则重新里面的内容,覆盖原来的信息
2 f.write("丹丹,我爱你!")
3 print(f)
f.close()#打开文件后,记得关闭文件
  • 加写法:
1 f = open("yesterday","a",encoding="utf-8")
2 data = f.write("
钰钰,我也爱你")
3 f.close()#打开文件后,记得关闭文件
  • tell()
  • seek()  
  • Readline():读取单行
  • readlines():读取整个文本
f = open("yesterday","r",encoding="utf-8")
print(f.tell())
print(f.readline())
print(f.tell())#计算当前光标所在位置,也就是该位置前字符的数目
f.seek(10)#将光标弄回到10,然后从10字符位置开始打印
print(f.readline())
  • 截断truncate()
f = open("yesterday","a",encoding="utf-8")
print(f.name)#打印文件名称
f.seek(20)
f.truncate(30)#从头开始截断到30字符位置,无论光标在哪里
  • 读写模式
#r+为读写,在文件最后追加
f = open("yesterday","r+",encoding="utf-8")
f.readline()
f.readline()
f.readline()
f.write("----------------------")
  • 写读模式(一般没用)
#w+为写读,新建一个文件,在文件最后追加,不要用
f = open("yesterday","w+",encoding="utf-8")
f.write("-------------靠---------1
")
f.write("-------------靠---------2
")
f.write("-------------靠---------4
")
f.write("-------------靠---------3
")
f.seek(0)
f.write("增加")
  • 二进制文件读
f = open("yesterday","rb")#读取二进制文件,因为是字节,所以没有编码,一般网络传输猜需要使用二进制文件
print(f.readline())
结果:b'----------------------'
  • 二进制文件写
f = open("yesterday",'wb')#写二进制文件
print("hello word
".encode())#因为文件是以二进制存储,所以字符串需要转换为二进制才能存入
f.close()
  • 文件的修改
    f = open("yesterday","r",encoding="utf-8")#读取文件信息
    f_new = open("yesterday_bak",'w',encoding='utf-8')#新建一个文件,作为写入修改后的文件
    #一行行读取f文件信息,当找到需要修改的信息时候,利用字符串替代函数将信息修改,然后写入新文件里
    for line in f:
        if "当他们演奏时我会跟着唱" in line:
            line = line.replace("当他们演奏时我会跟着唱","当我变得更加帅地唱")
        f_new.write(line)
  •  with语句打开单文件
#with语句能自动关闭文件,不需要在最后加上close,一般推荐使用这个方法
with open("yesterday","r",encoding="utf-8") as f :
    for line in f:
        print(line)
  • with语句打开多文件
#若打开多个文件,建议如下写法
with open("yesterday","r",encoding="utf-8") as f ,
        open("yesterday_bak","r",encoding="utf-8") as f1:
        for line in f:
            print(line)
原文地址:https://www.cnblogs.com/cheng662540/p/7978855.html