file的基本操作;file的修改
file的基本操作
# Author:nadech # 文件读写/修改/ #data = open("yesterday",encoding="utf-8").read() #这里要设置打开模式,默认是读r; #w的时候会打开文件,把之前文件覆盖; #a模式,append追加 import sys,time f = open("yesterday","r",encoding="utf-8")#f叫文件句柄,它包含了文件的名称,文件的大小,文件内存的起始位置等 #改变文件句柄的指针位置 print(f.readline()) print(f.tell()) f.seek(0) print(f.readline()) #编码方式 print(f.encoding) #操作系统给该文件句柄分配的编号 print(f.fileno()) # flush(),文件在执行写操作时,并不是实时写入到硬盘中的,而是当内存中缓存到一定数量之后写入,但是有些数据要求实时写入就可以用flush()强制写入 data = f.read() print(data) f.write("\n 我爱北京天安门,\n") f.write("\n 你是一个大傻逼。") print(f.readline()) print(f.readline()) #readlines只适合读小文件 for line in f.readlines(): print(line.strip()) #只读5行 for index,line in enumerate(f.readlines()): print("%s:"%(index),line) # 以上读文件的方法都可以忘记,因为上边的效率很低 # 这个方法是读入内存中一行,执行一行,而不是所有的都读到内存中 # 但是这个需要自己加一个计数器 count = 0 for line in f: if count == 9: print("——————我是分割线——————") count+=1 print(line.strip()) count+=1 for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.2) #truncate(),截断,里边的数字是从头剩下的字符数 f.truncate() #读写,可以读,可以写,写在后边 f1 = open("yesterday2","r+",encoding="utf-8") print(f1.readline()) print(f1.readline()) print(f1.readline()) f1.write("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") f1.write("gkukhkhkhkhkh") #写读 w+ #追加读 a+,这两个模式不怎么使用 #rb,用来读二进制文件,但是并不是看到的01010101,是文件按照二进制处理(网络传输ftp,socket;视频文件,音频文件) # f = open("yesterday","rb") #wb,二进制的写 #with语句 #with open("yesterday","r",encoding="utf-8") as f: #同时打开多个文件0 # with open("yesterday","r",encoding="utf-8"),\ # open("yesterday","r",encoding="utf-8")
file的修改并不是直接在源文件中进行修改,而是新建文件,将要修改的内容修改掉
# Author:nadech f = open("yesterday","r",encoding="utf-8") f_new = open("yesterday_back","w",encoding="utf-8") for line in f: if "令我笑容满面" in line: line = line.replace("令我笑容满面","令nadech笑容满面") f_new.write(line)