在进行接下来的学习中可以先做几道练习题【答案放到文章最后了】
python-文件操作入门练习题:
1.编写程序,创建一个文件名为 a.txt,文件中写入随意写入两行内容:
2.编写程序,显示上个练习生成的 a.txt 文件内容。
一、数据序列化
1.1数据序列化
-
序列化:将一个任意的数据类型转换成python能识别和处理的字符串
-
逆序列化:将python能识别的字符串转换成对应的数据类型
-
序列化的目的:将数据类型保存到磁盘上,也可以实现将数据发生给另外一个主机
数据类型
-
字符串
-
整数
-
列表
-
元组
-
集合
-
字典
实现序列化的方法
-
pickle
-
json
二、pickle模块
-
序列化方法:pickle.dump()
-
逆序列化方法:pickle.load()
pickle.dump实现序列化
pickle.dump(要保存的对象, 文件名)
案例:将字典实现保存到文件中
# 导入模块
import pickle
# 定义一个字典对象
nameList = {"tom":["hebei",18,"男"], "jerry":["tianjin",20,"女"]}
# 打开文件,打开方式 wb
file = open("d:/py1/c.pkl","wb")
# 用dump方法将字典写入到打开的文件中
pickle.dump(nameList, file)
# 关闭文件
file.close()
pickle.load实现逆序列化
pickle.load(文件名)
案例:从文件中读取字典类型保存的数据
import pickle
file = open("d:/py1/c.pkl","rb")
d1 = pickle.load(file)
file.close()
print(d1)
三、json模块
json的特点
-
JSON 是纯文本;
-
JSON 便于阅读和编写;
-
JSON 具有清晰的层级结构;
-
有效地提升网络传输效率;
JSON 语法规则
-
大括号保存对象;
-
中括号保存数组;
-
对象数组可以相互嵌套;
-
数据采用键值对表示;
-
多个数据由逗号分隔;
JSON 值
-
数字(整数或浮点数);
-
字符串(在双引号中);
-
逻辑值(true 或 false);
-
数组(在中括号中);
-
对象(在大括号中);
示例
{
"name": "tom",
"age": 18,
"isMan": true,
"school": null,
"address": {
"country": "中国",
"city": "河北",
"street": "石家庄"
},
"numbers": [2, 6, 8, 9],
"links": [
{
"name": "zaizhuo",
"url": "http://www.zaizhuo.cn"
},
{
"name": "载卓",
"url": "http://www.zaizhuo.com"
}
]
}
读取json文件
-
son.load(json文件名)
-
json.dump(data, f, ensure_ascii=False)
案例:读取json文件
# 导入模块
import json
# 打开文件
f = open('d:/py1/1.json', "r", encoding='UTF-8')
# 读取json文件
data = json.load(f)
# 返回的data 数据类型为字典或列表
print(data)
f.close()
案例:写入json格式数据
import json
data = {'name': 'tom', 'age': 20, 'country': '中国'} f = open('temp.json', 'w', encoding='UTF-8') json.dump(data, f, ensure_ascii=False)
# ensure_ascii=False 代表中文不转义
f.close()
答案一:
f1=open("d:/py1/a.txt","w")
str="hello world\n"
str2="i am ma"
f1.write(str)
f1.write(str2)
f1.close()
答案二:
f1=open("d:/py1/a.txt","r")
f2=f1.readlines()
print(f2)
f1.close()