python---文件操作
学习文件操作
1 # -*- coding:utf-8 -*- 2 # LC 3 4 f = open("lyrics","r",encoding="utf-8") #以utf-8的编码方式打开文件,文件句柄 5 data = f.read() #读取文件内容 6 7 f = open("lyrics","w",encoding="utf-8") #以写的方式打开,且为创建一个文件 8 f.write("今天上班\n") 9 f.write("明天下班\n") 10 11 f = open("lyrics","a",encoding="utf-8") #以追加的方式写入,但不能够读取 12 f.write("追加写入\n") 13 14 f = open("lyrics","r+",encoding="utf-8") #以读写的方式打开,即可读,也可写(追加),但写是从文件的最后开始写 15 print(f.readline()) 16 print(f.readline()) 17 f.write("===================") 18 f.close() 19 20 f = open("lyrics","w+",encoding="utf-8") #以写读的方式打开文件,即先创建一个文件,然后可读写,读可以实现位置移动,写是否根据光标需要看版本 21 f.write("+++---------------------+++\n") 22 f.write("+++---------------------+++\n") 23 f.write("+++---------------------+++\n") 24 print(f.tell()) 25 f.seek(30) 26 print(f.tell()) 27 f.write("************") 28 29 f = open("lyrics","a+",encoding="utf-8") #追加读写,原本a是只可追加,不可读,现是可读写的,读默认是在末尾,如果需要从头读,则需要seek(0a) 30 for line in f: 31 print(line) 32 33 f = open("lyrics","rb") #以二进制模式读 34 print(f.readline()) 35 f = open("lyrics","wb") #以二进制模式写入 36 f.write("hello\n".encode()) #默认是写入字符串,如果是二进制,则需要将字符串转换为二进制格式 37 38 f = open("lyrics","r",encoding="utf-8") 39 print(f.readline()) #读取文件中的一行 40 print(f.readlines()) #读取整个文件,并将每行作为列表的一个元素存储,只适合读取小文件,大文件会撑爆内存 41 42 f = open("lyrics","r",encoding="utf-8") 43 for index,line in enumerate(f.readlines()): #将文件读取成一个列表,每行是列表的元素,通过赋值line循环 44 if index == 9: 45 print("==============================") 46 print(line.strip()) 47 48 49 f = open("lyrics","r",encoding="utf-8") 50 for line in f: #将文件中的每一行赋值给line,line为字符串类型 51 print(line.strip()) 52 53 print(f.read(12)) #读取12个字符 54 print(f.readline()) 55 print(f.tell()) #告知现有光标位置 56 f.seek(0) #表示回到文件某个位置 57 58 print(f.encoding) #表示打开文件的编码方式 59 print(f.name) #打印文件名 60 print(f.seekable()) #判读文件是否可移动,如tty是不可以移动的 61 print(f.readable()) #判断文件是否可读 62 print(f.writable()) #判断文件是否可写 63 print(f.flush()) #强制刷新,默认是内存将数据存在缓存中,然后缓存聚集成一块后再统一刷到硬盘 64 f.closed #判读是否关闭 65 66 f = open("lyrics","a",encoding="utf-8") 67 f.truncate(20) #表示从文件头截断20个字符,seek无效,都是从头开始截断 68 69 #打印进度条 70 import sys,time 71 for i in range(100): #打印进度条 72 sys.stdout.write("!") #系统标准输出,不会换行 73 sys.stdout.flush() #每打印一个,立即刷新,即从内存中立即刷新 74 time.sleep(0.1) #每个延迟0.1秒