1. read,write 读写文本文件;
基本操作
一、⽂件的种类
1.
⽂
本
⽂
件
可以使
⽤⽂
本编辑软件查看;
例如:
python
的源程序 ,
txt
文本文件等;
2.
二进制
⽂
件
保存的内容不是给
⼈
直接阅读的,
⽽
是提供给其他软件使
⽤
的 ;
例如:图
⽚⽂
件、
⾳
频
⽂
件、视频
⽂
件等等 ;
⼆
进制
⽂
件不能使
⽤⽂
本编辑软件查看。
二、⽂件操作流程
1.
操作
⽂
件的套路
在计算机中要操作
⽂
件的套路
⾮
常固定,
⼀
共包含三个步骤:
1.
打开
⽂
件 ;
2.
读、写
⽂
件 ;
读:
将
⽂
件内容读
⼊
内存 ;
写:
将内容写
⼊⽂
件 。
3.
关闭
⽂
件 。
2.
操作
⽂
件的函数
/
⽅
法
在
Python
中要操作
⽂
件需要记住
1
个函数和
3
个方法
函数/方法 | 说明 |
open | 打开文件,返回文件操作对象 |
read | 将文件读取到内存 |
write | 将指定内容写入文件 |
close | 关闭文件 |
open
函数,打开文件
open
函数负责打开
⽂
件,并且返回
⽂
件对象
read / write / close
三个
⽅
法都需要通过
⽂
件对象 来调
⽤
read
⽅
法
——
读取
⽂
件
open
函数的第
⼀
个参数是要打开的
⽂
件名(
⽂
件名区分
⼤⼩
写) ;
如果
⽂
件存在
------
返回
⽂
件操作对象 ;
如果
⽂
件不存在
------
出错 ;
read
⽅
法可以
⼀
次性读取文件的所有内容 。
close
⽅
法负责关闭
⽂
件
如果忘记关闭
⽂
件,会造成系统资源消耗,
⽽
且会影响到后续对
⽂
件的访
问 。
# 打开文件
file = open("C:\\Users\\wmk\\Desktop\\双周计划.txt", encoding="UTF-8")
# 读取文件
text = file.read()
print(text)
file.close()
# 写入文件
file1 = open(r"C:/Users/wmk/Desktop/双周计划.txt" ,"w")
str1 = "hello world\n"
file1.write(str1)
str1 = "hello python\n"
file1.write(str1)
# 关闭文件
file1.close()
四、
open
打开
⽂
件的
⽅
式
open
函数默认以只读
⽅
式打开
⽂
件,并且返回
⽂
件对象
“r”:
只读方式打开文件
;
“w”:
只写方式打开文件
;
“a”:
追加写方式打开文件
;
open
函数的访问方式后面添加
b
参数代表访问二进制文件,
如:
rb:
代表用只读的方式打开一个二进制文件;
wb
:代表用只写的方式打开一个二进制文件。
ab
:代表用追加写的方式打开一个二进制文件。
五、
open
打开文件时指定字符集
open(
文件名
,
打开方式
, encoding=’
字符集
’)
。
1.
以
utf8
编码格式打开文件
如果指定文件字符集编码不是
utf8
,打开会报错
# 打开文件
file = open(r"C:\file\temp\a.txt", "r", encoding="utf8")
2.
以
gbk
编码格式打开文件
如果指定文件字符集编码不是
gbk
,打开会报错
# 打开文件
file = open(r"C:\file\temp\a.txt", "r", encoding="gbk")
按行读取文件内容
- read ⽅法默认会把⽂件的所有内容⼀次性读取到内存 ;
- 如果⽂件太⼤,对内存的占⽤会⾮常严重 ;
- 解决方案:按行读取文件内容。
一、readline ⽅法
readline
方法可以一次读取一行内容。
⽅
法执
⾏
后,会把
⽂
件指针移动到下
⼀⾏
,准备再次读取
readline
方法读取到文件最后
,
返回长度为
0
的字符串
””
二、readline 读取文件一行内容
# 打开文件
file = open(r"C:\file\temp\a.txt")
# 读取一行内容
text = file.readline()
# 显示读取内容
print(text)
# 关闭文件
file.close()
三、结合 while 循环 readline 读取文件全部内容
# 打开文件
file = open(r"C:\file\temp\a.txt")
while True:
text = file.readline()
if text == "":
# 如果已经读取到文件最后,循环结束
break
# 显示读取内容
print(text, end="")
# 关闭文件
file.close()
四、
readlines
⽅
法
readlines
方法可以一次读取文件所有行,返回类型为列表。
readlines
读取文件所有行内容,并显示文件全部内容
# 打开文件
file = open(r"C:\file\temp\a.txt")
# text 类型为 list,list 中每个成员就是文件 a.txt 的每一行
text = file.readlines()
# 遍历列表 text
for n in text:
# 显示 text 每个成员内容
print(n)
# 关闭文件
file.close()
五、
with open
语法
f = open("a.txt", "r")
text = f.read()
print(text)
f.close()
以上代码等价
with open("a.txt", "r") as f:
text = f.read()
print(text)
JSON 操作
一、JSON 特点
- JSON 是纯文本;
- JSON 具有良好的自我描述性,便于阅读和编写
- JSON 具有清晰的层级结构;
- 有效地提升网络传输效率;
二、JSON 语法规则
- 大括号保存对象;
- 中括号保存数组;
- 对象数组可以相互嵌套;
- 数据采用键值对表示;
- 多个数据由逗号分隔;
三、JSON 值
- JSON 值可以是:
- 数字(整数或浮点数);
- 字符串(在双引号中);
- 逻辑值(true 或 false);
- 数组(在中括号中);
- 对象(在大括号中);
- null
{"name": "tom",
"age": 18,
"isMan": True,
"school": null,
"address": {
"country": "中国",
"city": "上海",
"street": "高泾路"
},
"numbers": [2, 6, 8, 9],
"links": [
{
"name": "王小柯_0314",
"url": "https://blog.csdn.net/wwwkm123?type=blog"
}
]
}
四、json 数据操作
1. JSON
文件读写
读取
JSON
文件
import json
f = open('a.json', "r", encoding='UTF-8')
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()
2.
课堂练习
1.
文件
test.json
内容如下:
{ "name": "诸葛亮", "sex": "男", "age": 24 }
2.
利用
json.load
与
json.dump
将
age
的值修改为
30
# 思路:
# 先把内容从test.json文件中读出来
# 读出来的结果是一个字典
# 把字典中键age对应 的值修改为30
# 再把字典写回到test.json文件中
import json
file = open("test.json", "r", encoding="utf8")
dict1 = json.load(file)
file.close()
dict1["age"] = 30
file = open("test.json", "w", encoding="utf8")
json.dump(dict1, file, ensure_ascii=False)
file.close()