文件处理(记录经典代码及相关逻辑)

操作:关于文本写入中的 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.
可能原因:文件为空。
解决办法:加载非空文件。
'''

 

posted @ 2020-04-08 19:08  yescarf  阅读(250)  评论(0编辑  收藏  举报