一、文件处理

注意点1:

打开文件包含两部分资源:操作系统级打开得文件+应用程序的变量。

在操作完毕一个文件时,必须把该文件的两部分资源一个不落的回收

如下:

f.close()   #回收操作系统级打开的文件
del f       #回收应用程序级的变量,python 的自动回收机制决定了我们无需再考虑这部操作

也可以用with关键字来管理上下文(防止忘写)

注意点2:

操作文件(f.open(...))是由操作系统打开文件,如果没有指定编码,那么默认编码是操作系统说了算(windows下是GBK,linux下是utf-8)

若要保证不乱码,文件以什么方式存的就以什么方式打开

f = open('txt','r',encoding = 'utf-8')

注意点3:(记住啊)

打开文件的模式:

(默认为文本模式:'t',非文本文件用'b'模式,表示以字节的方式操作,该模式不需要考虑字符编码,图片格式等等;这两种模式和下面搭配使用)

'r':只读模式(默认模式,文件必须存在,不存在则抛出异常)

'w':只写模式 (不存在则创建;存在则清空内容)

'a':只追加写模式(不存在则创建;存在则追加内容)

'x':只写模式(不存在则创建,存在则报错)

其它:

'+':表示可以同时读写某个文件(和上面搭配)

操作文件的方法:
读:
f.read()  #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines()  #读取每一行内容,存放于列表中
n
写:
f.write('lzl 真帅!\n')   #文本模式写,需要自己写换行符
f.write('lzl 真帅!\n'.encode('utf-8'))  #b模式下写,..(懒得打字了,都一样)
f.writelines(['lzl\n','真帅!\n'])  #向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表

f.readable() #文件是否可写
f.writable() #文件是否可读
f.closed #文件是否关闭
f.encoding #如果文件打开模式为b,则没有该属性
f.flush() #立刻将文件内容从内存刷到硬盘

二、json 模块

补充:

把对象(变量)从内存中变成可存储或传输的过程称之为序列化

序列化原因:

1.持久保存状态

2.跨平台交互数据

注意点1:

json.dumps(): 可以对数据进行编码(序列化)

json.loads(): 对数据进行解码(反序列化)

json.dump():方便文件编码操作

json.load():方便文件解码操作

如下:

import json


with open('a.txt','w') as f:
    j = json.dumps('aa')
    f.write(j) 
        
    #json.dump('aa',f)  
     
        

with open('a.txt','r') as f:
    a = f.read()            
    print(json.loads(a))
    
    # print(json.load(f))

    
posted on 2021-04-22 10:52  lzl_121  阅读(85)  评论(0编辑  收藏  举报