1.文件操作流程:打开,操作,关闭:
f=open('文件1号','r',encoding='utf8') #打开文件对象,命名为f(r代表读模式) #print(f.read()) #f.read()是读取文件全部内容 print(f.read(3)) #读取前三个字符,读完后光标移动到下一字符 print(f.read(4)) #读取4个字符(读取时默认每一行最后有一个换行符) #f.close() #关闭文件 #f=open('文件1号','w',encoding='utf8') #w代表写模式 #f.write('hello \n' ) #f.write('萨瓦迪卡') #w模式下write写入时会将原来的内容格式化 #f.close() #import time #f=open('文件1号','a',encoding='utf8') #a代表append模式 #f.write('\n马勒戈巴子') #给文件增加新内容 #time.sleep(20) #在没有关闭文件的情况下,20s以后才会写进去
2.文件操作具体方法:
f=open('小重山','r',encoding='utf8') #print(f.readline()) #读取第一行,读完后指针指向下一行 #print(f.readline()) #打印的是第二行。readline()自带换行符,print也自动换行,所以一共换了两行 #print(f.readlines()) #f.readlines()读取的是包含所有行的一个列表,每个元素都带换行符 #for i in f.readlines(): #用for循环打印f.readlines()列表,打印时会自动识别换行符 # print(i) #for i in f.readlines(): # print(i.strip()) #strip的功能是去掉换行符 number=0 for i in f.readlines(): number+=1 if number==5: i=''.join([i.strip(),'奈何']) #用join进行字符串拼接,给第5行加内容 print(i.strip()) f=open('小重山','r',encoding='utf8') for i in f: #f.readlines()是将f对象读取为列表放入内存;而此处for循环以"迭代器"去读取,i指向谁,谁占内存 print(i.strip()) #当下一个要进入内存时,上一个已经不占内存了,要比f.readlines()省内存,更优 f.close() #对某一行操作: f=open('小重山','r',encoding='utf8') number=0 for i in f: number+=1 if number==5: i=''.join([i.strip(),'奈何']) #用join进行字符串拼接,给第5行加内容 print(i.strip()) f.close() f=open('小重山','r',encoding='utf8') print(f.tell()) #识别光标的位置,起始位置是0 print(f.read(2)) #读两个字符 print(f.tell()) #一个汉字占三个字节,光标一次走一个字节,所以指到6 f.seek(3) #调整光标位置,很重要 print(f.read(4)) f.close()
3.flush及其他模式
import time f=open('文件2号','w',encoding='utf8') f.write('apple ') f.write('hello') f.flush() #flush实现写完后立即存入磁盘文件,如果没有flush,程序执行完后才会写入 time.sleep(3) f.close() import time for i in range(30): print('*',end='') time.sleep(0.02) print('\n') import time for i in range(30): print('*',end='',flush=True) #与上一段代码相比,flush实现了动态输出功能 time.sleep(0.1) f=open('文件2号','a',encoding='utf8') f.truncate(3) #从第三个位置以后截断,只保留前面的内容 f=open('文件3号','r+',encoding='utf8') print(f.read()) #读写模式,可读可写,写在最后 f.write('你好') f.close() f=open('文件3号','w+',encoding='utf8') f.write('abcdefg') #写读模式,写前会格式化 f.seek(0) #写完后光标在最后,所以读不到内容,需要调整光标位置 print(f.readline()) f.close() f=open('文件3号','a+',encoding='utf8') f.write('water') f.seek(0) #添加完后光标在最后,所以读不到内容,需要调整光标位置 print(f.readline()) f.close()
4.文件修改
f_read=open('小重山','r',encoding='utf8') f_write=open('小重山2','w',encoding='utf8') number=0 for i in f_read: number+=1 if number==5: i='hello 岳飞\n' #完全替换 elif number==6: i=''.join([i.strip(),'奈何\n']) #增加内容 f_write.write(i) f_read.close() f_write.close()
5.with方法
with open('小重山','r') as f: #等价于f=open('小重山','r'),退出with语句就关闭了文件,不需要close f.read() print('jjj') #with同时管理多个文件对象: with open('文件1','r') as f1,open('文件2','w') as f2: