open与json细节篇

open 

open函数
流程:
1.打开文件
2.操作文件
3.关闭文件
模式:
#二进制
rb读取二进制,比如图片
wb写入二进制 返回bytes,字节
r只读,文件不存在会报错
w只写,文件不存在会创建,存在则覆盖原始内容
x只写,文件不存在报错,新建一个写入内容
a只写追加新内容到原始文件末尾,如果不存在则创建
r+ 可读写,不存在则报错
w+ 可读写,不存在则创建
a+ 可读写,不存在则创建
读取:
read将整个文件读取 返回字符串
readline读取一行,返回字符串
readlines读取所有行,返回列表,列表中每一个元素都是字符串,代表一行
readable是否可读
写入:
write将字符串内容写入文件
writeable是否可写
writelines将列表中所有字符串写入文件

with open随着代码块的结束 f自动关闭 不需要调用close
with open("文件名",模式) as f
 

(1)r只读

文件不存在会报错

f = open("data.txt", mode="r")
print(f.readable())

(2)w只写

文件不存在会创建,存在则覆盖原始内容

f = open("data1.txt", mode="w")
print(f.writable())
# write将字符串内容写入文件
f.write("this is new content")
# writelines将列表中所有字符串写入文件
f.writelines([
"hello\n",
"hi\n",
"welcome"
])
f.close()

(3) x只写

文件不存在报错,新建一个写入内容

# f = open("data2.txt", "x")
# f.write("I love Python")
# f.close()

(4)a只写

追加新内容到原始文件末尾,如果不存在则创建

# f = open("data3.txt", "a")
# f.write("Do you love Python?")
# f.close()

(5) read

将整个文件读取 返回字符串

content = f.read()
print(type(content),content)

(6)readline

读取一行,返回字符串

line = f.readline()
print(type(line))

(7)readlines

读取所有行,返回列表,列表中每一个元素都是字符串,代表一行

content = f.readlines()
print(type(content), content)

f.close()

'''
图片
'''

(1)rb

读取二进制,比如图片

f = open("image.png", "rb")
content = f.read()
#print(content)
# f.close()

(2)wb

写入二进制,返回bytes, 字节

f1 = open("image_new.png", "wb")
f1.write(content)
f1.close()

 json

'''
json
序列化:将对象类型(列表,字典)转换成字符串,文件可以保存字符串 dumps dump
反序列化:读取文件中字符串,将对象反序列化成 loads load
'''

(1)序列化

import json
def save_data():
datas = {"students":[{"id": 101 } , {"id": 102}]}
# 将字典序列化成字符串
#第一种
datas_str = json.dumps(datas)
with open("data.txt", "w") as f:
f.write(datas_str)

#第二种
#dump 不用再写入了
# with open("data.txt", "w") as f:
# json.dump(datas, f)
save_data()

(2)反序列化

import json
def load_data():
# 第一种
with open("data.txt", "r") as f:
content = f.read()
content = json.loads(content)
print(content, type(content), len(content["students"]))
# 第二种
# with open("data.txt", "r") as f:
# content = json.load(f)
# print(content, len(content["students"]))
load_data()

(3)持久化保存数据

import json
import os
result = {
"students": [],
"class": [],
"score":[],
"user":[]
}

def read_data():
if os.path.exists("data.txt"):
with open("data.txt", "r") as f:
global result
result = json.load(f)
read_data()

def save_date():
global result
result["students"].append({
"id": result["students"][-1]["id"] + 1 if result["students"] else 101,
"name": input("输入用户名")
})
with open("data.txt", "w") as f:
json.dump(result, f)
save_date()

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值