1、文件操作
1 # 文件读写 2 # http://www.nnzhp.cn/archives/160 3 # # 打开,读取,写,关闭 4 f=open('cm','r+',encoding='utf-8')#打开文件,默认gbk,所以需要转码 5 # f.close() #一旦打开必须关闭 6 7 # 文件打开三种方式,读 写 追加 r w a 8 # 读 r 不指定时默认为读 9 # 读写 r+ 只要有r,文件不存在都会报错 10 # 写 w 11 # 写读 w+ 只要有w,文件内容就会清空 12 # 追加 a 13 # 追加读写 a+ 打开文件直接读取的话,读取不到,文件指针在最后,需要用seek 14 15 # seek(0)移动文件指针的位置,读取所有行的内容,注意文件指针的位置,是在哪里,才从哪里读取 16 f.seek(0) #seek追加的时候,只对读好使,对写不好使 17 print(f.read())#读取所有内容 18 print(f.readline())# 只读取一行的内容 19 print(f.readlines())#读取所有内容,把文件里面每一行的内容放到一个list里面 20 21 # 22 ## write不支持数组的写,而writelines支持 23 names =['cm1','cm2','cm3'] 24 names1 =('cm1','cm2','cm3') 25 names2 ="'cm1','cm2','cm3'" 26 # f.write(names) 会报错,不支持数组的写 27 f.writelines(names) 28 f.writelines(names1) 29 f.writelines(names2) 30 31 # # 清空文件内容 32 # f.seek(0) 33 # f.truncate() 34 35 # f.tell()告诉指针所在的位置 36 f.writelines(names) 37 print(f.tell()) 38 f.close()
2、flush rb wb ab
1 # 2 # f.flush() #立即刷新函数,有时候write写不进去,需要立即把缓冲区的内容写到磁盘里,flush 3 # f = open('cm.txt', 'w', encoding='utf-8') 4 # f.write('sss') 5 6 # # 用with自动管理文件,一旦不用文件的话,可以自动给关闭,不用写close关闭 7 # with open('cm.txt','w') as cmf: 8 # cmf.write("hahaha") 9 10 # # with 可以同时打开多个文件,用,隔开 weishenm? 11 # with open('cm.txt','w',encoding='utf-8') as f1,open('cm1.txt','w', encoding='utf-8') as f2: 12 # f1.write("啊啊啊啊啊啊啊啊啊") 13 # f2.write("啊啊啊啊啊啊啊啊啊") 14 15 # rb 以二进制模式打开 16 # wb 以二进制模式写 17 # ab 以二进制模式追加 18 19 #更换图片 20 import requests 21 url='https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1515587533566&di=b738787410ea4a2ffd910a3d75c1a0d3&imgtype=0&src=http%3A%2F%2Fimg.article.pchome.net%2F00%2F42%2F98%2F62%2Fpic_lib%2Fs960x639%2Fhbtb%2520%252811%2529s960x639.JPG' #图片的地址 22 img=requests.get(url).content 23 f=open('postman.png','wb') 24 f.write(img)
3、修改文本内容
1 # 修改文本内容,方法1 2 with open('geci.txt','a+',encoding='utf-8') as f: 3 f.seek(0) 4 all = f.read() 5 newall = all.replace('一','二') 6 f.seek(0) 7 f.truncate() 8 f.write(newall) 9 f.flush() 10 11 # 修改文档内容方法2:像excel或者其他修改文件的操作,基本是这么处理 12 import os #os模块包含普遍的操作系统功能 13 with open('geci.txt','a+',encoding='utf-8') as f , open('geci.bak','w+',encoding='utf-8') as f2: 14 f.seek(0) 15 for line in f: 16 newline = line.replace('一','二') 17 f2.write(newline) 18 os.remove('geci.txt') 19 os.rename('geci.bak','geci.txt')