计算机可以分为 文本文件 和 二进制文件:
- 文本文件 :可以使⽤⽂本编辑软件查看; 例如:python 的源程序 ,txt 文本文件等;
- 二进制文件:保存的内容不是给⼈直接阅读的,⽽是提供给其他软件使⽤的 ; 例如:图⽚⽂件、⾳频⽂件、视频⽂件等等 ; ⼆进制⽂件不能使⽤⽂本编辑软件查看。
1、基本操作
在计算机中要操作文件的套路非常固定,一共包含三个步骤:
- 打开⽂件 ;
- 读、写⽂件 ;
读: 将⽂件内容读⼊内存 ;
写: 将内容写⼊⽂件 。 - 关闭⽂件 。
1.1 操作文件的函数/方法
在 Python 中要操作⽂件需要记住 1 个函数和 3 个方法。
序号 |
函数/方法 |
说明 |
1 |
open |
打开文件,并且返回文件操作对象 |
2 |
read |
将文件内容读取到内存 |
3 |
write |
将指定内容写入文件 |
4 |
close |
关闭文件 |
注:
1、open 函数的第⼀个参数是要打开的⽂件名(⽂件名区分⼤⼩写) ;
2、如果⽂件存在------返回⽂件操作对象 ;如果⽂件不存在------出错 ;
3、如果忘记关闭⽂件,会造成系统资源消耗,⽽且会影响到后续对⽂件的访问 。
1.2 文件操作案例-------读文件
# 打开文件 file = open(r"C:\Users\Administrator\Desktop\工单查询.txt", "r", encoding="utf8") # 读取文件 text = file.read() # 显示读取内容 print(text) # 关闭文件 file.close()
注意:
在 python 中 ,字符串前面加 r,表示字符串的内容不通过\转义 ;
encoding="utf8" 以 utf8 编码格式打开文件 。
1.3 文件操作案例-------写文件
# 打开文件 file = open(r"C:\Users\Administrator\Desktop\Test.txt", "w") # 写入内容 str1 = "求个关注+点赞\n" file.write(str1) # 关闭文件 file.close()
1.4 open 打开⽂件的⽅式
open 函数默认以只读⽅式打开⽂件,并且返回⽂件对象
- “r”:只读方式打开文件;
- “w”:只写方式打开文件;
- “a”:追加写方式打开文件;
open 函数的访问方式后面添加 b 参数代表访问二进制文件
rb: 代表用只读的方式打开一个二进制文件;
wb:代表用只写的方式打开一个二进制文件。
ab:代表用追加写的方式打开一个二进制文件
2、按行读取
read ⽅法默认会把⽂件的所有内容⼀次性读取到内存 ,但是如果⽂件太⼤,对内存的占⽤会⾮常严重。
解决方案就是: 按行读取文件内容。
2.1 readline ⽅法
readline 方法可以一次读取一行内容,⽅法执⾏后,会把⽂件指针移动到下⼀⾏,准备再次读取readline 方法读取到文件最后,返回长度为 0 的字符串 ”” 。
# 打开文件 file = open(r"C:\Users\Administrator\Desktop\工单查询.txt", "r", encoding="utf8") # 读取文件 text = file.readline() # 显示读取内容 print(text) # 关闭文件 file.close()
我们还可以结合 while 循环 readline 读取文件全部内容
# 打开文件 file = open(r"C:\Users\Administrator\Desktop\工单查询.txt", "r", encoding="utf8") while True: # 读取文件 text = file.readline() if text =="": break # 显示读取内容 print(text,end="") # 关闭文件 file.close()
2.2 readlines ⽅法
readlines 方法可以一次读取文件所有行,返回类型为列表。
# 打开文件 file = open(r"C:\Users\Administrator\Desktop\工单查询.txt", "r", encoding="utf8") text = file.readlines() for i in text: print(i,end="") # 关闭文件 file.close()
2.3 with open 语法
with open(r"C:\Users\Administrator\Desktop\工单查询.txt", "r", encoding="utf8") as file: print(file.read())
3、JSON 操作
JSON 的全称是”JavaScript Object Notation”,是 JavaScript 对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
3.1 特点
- JSON 是纯文本;
- JSON 具有良好的自我描述性,便于阅读和编写;
- JSON 具有清晰的层级结构;
- 有效地提升网络传输效率;
3.2 语法规则
- 大括号保存对象;
- 中括号保存数组;
- 对象数组可以相互嵌套;
- 数据采用键值对表示;
- 多个数据由逗号分隔;
3.3 值
- 数字(整数或浮点数);
- 字符串(在双引号中);
- 逻辑值(true 或 false);
- 数组(在中括号中);
- 对象(在大括号中);
- null
示例:
{ "name" : "node-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "rtFGtGA3QKqy3nnm4f33SA", "version" : { "number" : "7.3.0", "build_flavor" : "default", "build_type" : "zip", "build_hash" : "de777fa", "build_date" : "2019-07-24T18:30:11.767338Z", "build_snapshot" : false, "lucene_version" : "8.1.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
3.4 数据操作
读取json文件:
import json # 打开文件 f = open(r"C:\Users\Administrator\Desktop\Test.json", "r", encoding="utf8") data = json.load(f) # 返回的 data 数据类型为字典或列表 print(data) f.close()
写入json文件:
import json # 准备数据 data = {'name': '一切总会归于平淡', 'age': 18, 'url': 'https://juejin.cn/user/567767899324286'} # 打开文件 f = open(r"C:\Users\Administrator\Desktop\Test.json", "w", encoding='UTF-8') json.dump(data, f, ensure_ascii=False) f.close()
注:
ensure_ascii=False 代表中文不转义