文件操作
一、文件基本操作
1.文件操作
文件内容的操作,主要是文件读操作和写操作。
2.文件操作基本步骤
第一步:打开文件
open('files/poem.txt')
第二步:读文件-获取文件内容/写文件-将内容写入文件中
第三步:关闭文件
1)打开文件
open(file,mode=‘r’,…,encoding=None) - 以指定的方式打开指定文件并且返回一个文件对象
- file - 字符串,需要打开的文件的路径
- mode - 文件打开方式(决定打开文件后能够支持的操作是读还是写;决定打开文件后操作数据的数据类型是文本数据还是二进制数据)
- encoding - 文本文件的编码方式,一般设置为’utf-8’
控制读写的mode值
- ‘r’ - (默认)只读, 被打开的文件不存在会报错
- ‘w’ - 只写,打开的时候会先删除原文件内容, 被打开的文件不存在会自动创建
- ‘a’ - 只写, 打开的时候不会删除原文件内容, 被打开的文件不存在会自动创建
- ‘x’ - 只写, 新建文件(打开已经存在的文件会报错,打开不存在的文件会自动创建)
控制数据类型的mode值
- ‘t’ - 文件的数据是文本数据(字符串类型, 默认值,只有文本文件操作的时候才能使用)
- ‘b’ - 文件的数据是二进制数据(bytes类型,适用于任何文件,不能设置encoding的值)
注意:mode值的两种控制方式要一起用, ‘rt’/‘tr’/‘rb’/‘br’, ‘wt’/‘tw’/‘wb’/‘bw’, …
2)读写文件
文件对象.read()
文件对象.write(内容)
3.文件域 - 文件对象的作用范围
通过with open 打开文件,能够让被打开的文件对象自带作用范围,不需要手动关闭文件。
with open(file, mode='r',...,encoding=None) as 文件对象:
文件的作用域
二、数据持久化
1.数据持久化
程序中的数据默认都是保存在运行内容中的,当程序运算结束后全部都会销毁。数据持久化是将数据保存在文件中(文件是保存在硬盘中,硬盘里面的数据除非手动操作或者硬盘损坏或者格式化,否则是不会销毁的)
2.什么时候需要做数据持久化
如果希望这次运行程序产生的数据,在一下次运行程序的时候还能用,那么这个时候就需要对这个数据进行持久化。
3.怎么做持久化
满足以下3点数据就能持久化:
- 用一个文件来保存对应的数据
- 程序中需要这个数据的时候从文件中读出这个数据而不是在程序中直接给值
- 数据发生了改变,要将最新的数据更新到文件中
三、CSV文件的操作
1.什么是CSV文件
csv是一种用逗号将一行数据隔开的文本文件,这种文件可以用表格来打开。多用于数据处理中数据的提供和保存。
2.python中怎么操作CSV文件
Python的标准库中有一个csv库,专门用来提供和csv文件操作相关功能。
1)写数据
创建writer方式
写对象 = csv.writer(csv文件对象)
写对象.writerow(元素是一行内容的列表)
写对象.writerows(元素是列表的列表)
3.CSV文件的读操作
以列表/字典的形式读数据
获取文件中的内容,返回值reader本质就是一个迭代器,迭代器中的元素是每一行内容对应的列表。
四、json数据
1.什么是json
json是一种特殊的文本数据格式,绝大部分编程语言都支持这种格式的数据的处理。一般在不同语言的程序之间进行数据交流的时候,数据的格式都是json格式。
2.json格式
json格式的数据要求:
- 一个json有且只有一个数据
- 唯一的这个数据必须是json支持的数据类型的数据
json支持的数据类型和表示方式:
- 数字类型 - 所有的数字,表示的时候直接写(支持科学计数法): 100, 100, 23.45, 3e4
- 字符串 - 所有的文本数据, 需要使用双引号引起来:“你好”, “hello”, “abc\n123”, “\u4e00”
- 布尔类型 - 只有 true 和 false 两个值
- 数组类型 - [元素1, 元素2, 元素3,…]
- 字典类型 - {键1:值1, 键2:值2, …}(键必须是字符串)
- 空值 - null(相当于Python中的None)
3.python数据和json之间的数据转换
1)python 转json
- int/float - 数字
- 字符串 - 双引号字符串
- 布尔值 - True->true, False->false
- None - null
- 列表、元组 - 数组
- 字典 - 字典
json.dumps(python数据) - 将指定的python数据转换成对应的json格式的字符串(字符串的内容符合json格式的要求的字符串就是json格式的字符串)。
2) json 转python
- 数字 - int/float
- 字符串 - 字符串(引号会变成单引号)
- 布尔值 - true->True, false->False
- null - None
- 数组 - 列表
- 字典 - 字典
json.loads(json格式的字符串) - 将json格式字符串中的数据转换成相应python类型的数据。