文件处理(记录经典代码及相关逻辑)
操作:关于文本写入中的 r,w,a,b,+的操作 https://blog.csdn.net/qq_38059635/article/details/81606977
1.文件写入关闭(注意操作程序目录地址)
#简单文件写入程序 open write f= open('mytest1.txt','w') f.write('今天天气\n不错的\n')#换行符 f.write('今天天气\t不错的\t')#加空格 f.close()
#列表元组文件写入 writelines f = open('列表文本写入.txt','w') list1 = ['ds','133','好天气']#这里必须是str,不能是int f.writelines(list1) f.close()
content:ds133好天气
#加入空格或者换行 f = open('列表文本写入.txt','w') list1 = ['ds\n','133\n','好天气\n']#这里必须是str,不能是int 直接加上\n即可 f.writelines(list1) f.close()
#for循环将文本换行 f = open('列表文本写入.txt','w') list1 = ['ds','133','好天气','dsa','利用','报复']#这里必须是str,不能是int for i in list1: f.write(i+'\n')#字符串拼接 f.close() #output: ds 133 好天气 dsa 利用 报复
#字典文件写入 writelines f = open('列表文本写入.txt','w') list1 = {'ds':'133','好天气':'dsa','利用':'报复'}#这里必须是str,不能是int for k,v in list1.items():
f.write(k+' '+v+'\n') f.close() #output: ds 133 好天气 dsa 利用 报复
2.关闭文件
close(),使用try防止异常出现,而不导致文件不能正常关闭
try: f = open('列表文本写入.txt','w') list1 = {'ds':'133','好天气':'dsa','利用':'报复'}#这里必须是str,不能是int for k,v in list1.items(): f.write(k+' '+v+'\n') except Exception as ex: print('ex') finally: f.close()
3.with连接上下文避免报错close
with open('列表文本写入.txt','a')as f: #a原先基础上再写入,w只是写入会覆盖原先数据 f.write('xoapjap')
4.read、readline、readlines操作
with open('列表文本写入.txt','r')as f: #a原先基础上再写入,w只是写入会覆盖原先数据\ '''简单理解:read是一个大的字符串
readline 读取一行是一个字小字符串
readlines 读取所有行,并把行加到一个列表,最终结果是一个列表
''' a =f.readline() #读取一行内容作为结果返回。读取到文件末尾,会返回空字符串 print(a) b = f.readlines() #文本文件中,每一行作为一个字符串存入列表中,返回该列表 print(b) #read([size]) 从文件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则读取整个文件。 读取到文件末尾,会返回空字符串。 for i in f.read(): print(i) #这里没有输出,因为前面的read 将指针停留在了最后,因此没有read
5.二进制文件的读写_图片的拷贝
#二进制文件读写拷贝 b模式 wb:可写的,重写二进制文件 ab:可写的,追加写入二进制文件 rb可读的二进制文件 with open('3.jpg','rb')as f: with open('3_copy.jpg','wb') as w: for i in f.readlines(): w.write(i)
6.pickle模块的存储读取#pickle模块
import pickle a1='boke' a2=135 a3 = [1,2,3,'张三','da'] with open('date.dat','wb') as f: pickle.dump(a1,f) pickle.dump(a2,f) pickle.dump(a3, f) with open('date.dat','rb') as f: b1= pickle.load(f);b2 =pickle.load(f);b3=pickle.load(f) print(b1);print(b2);print(b3) help('pickle.loads')
'''使用pickle.load(f)加载pickle文件时,报错:EOFError: Ran out of input.
可能原因:文件为空。
解决办法:加载非空文件。
'''