Python基础—读写模式

一、数据持久化

问:为什么要数据持久化?

持久化将程序数据在持久状态和瞬时状态转化的机制

将瞬时状态(内存中的数据,是不能永久保存)转换为持久数据(硬盘中的数据,能够长久保存)

持久化的应用是将内存中的对象存储在硬盘、数据库等位置

二、文本文件的读写模式

1. 使用Python打开一个文件:open方法

语法:open(参数1, 参数2, 参数3, …)

参数2:mode —— 文件打开的读写方式

注意:文件的读或者写不能同时进行

2. 文件打开的模式

w:只写,先清空内容再写入内容,如果文件不存在,先创建,再写入

a: 只写,直接在文件末尾追加写,如果文件不存在,先创建,再写入

r: 只读,如果文件不存在,报错

3. 打开文件以后操作文件的数据类型

t: 读写的数据类型必须是文本(text)

b:读写的数据类型必须是二进制(bytes)

上述两种模式各选其一组合使用

例如:wt、 tw、 at、 ta、 rt、 tr等等

二进制文件(图片、音频、视频等)必须以b模式打开,文本文件等要用t模式打开

三、文本文件的写操作

1. open方法的使用

open方法用于打开一个文件并返回被打开的这个文件对象

open(参数1,参数2,参数3,…)

参数1:file —— 文件的路径以及文件名(文件路径分为相对路径和绝对路径,编程中仅仅使用相对路径)

参数2:mode —— 文件打开的读写模式

参数3:编码方式 —— encoding:一般将encoding写为utf-8,但是有些文件编码不是utf-8,而是gbk等编码

绝对路径:以盘符为参照物,对盘符来说文件的位置

相对路径:以某个文件为参照物,另一个文件的位置

3. 文本文件的写操作

①打开一个文件,如果文件不存在,创建文件

file = open('./古诗.text', 'wt', encoding='utf-8')

②向打开的文本文件中写入内容

file.write('静夜思\n')
file.write('唐.李白\n')
str_1 = '床前明月光,\n疑是地上霜,\n举头望明月,\n低头思故乡。\n'
file.write('str_1')

③关闭文件

file.close()

运行后系统生成一个古诗.text的文件,打开如下:

在这里插入图片描述

I/O operation on closed file.

I/O —— input / out

文件关闭之后不能再进行I/O操作

四、文本文件的读操作

①打开文件(读写同一个文件的编码方式需要保持一致)

file = open('古诗.text', 'rt', encoding='utf-8')

②读取数据

1.readline():每次只读取一行数据,字符串类型

data_1 = file.readline()
print(data_1)

运行结果:静夜思

2.read():能够将文件中的数据一次性读取出来

# data_2 = file.read()
# print(data_2)

运行结果:床前明月光,
         疑是地上霜,
         举头望明月,
         低头思故乡。

3.readlines():一次性将所有行读出来,每一行作为一个元素保存在列表中

data_3 = file.readlines()
print(data_3)

运行结果:['床前明月光,\n', '疑是地上霜,\n', '举头望明月,\n', '低头思故乡。\n', '\n']

4.关闭文件

file.close()

五、二进制数据的读写

电脑中的所有文件都是以二进制数据保存的。有些文件,例如word、ppt、txt、pdf这些文件,里面保存的信息是供人阅读的,人接受的是文本、十进制等,所以这些信息是经过计算机处理的

相比于文本文件的读写,二进制数据的读写不用encoding,且只能使用b

1.二进制文件的读

file = open('图片1.jpeg', 'rb')
data = file.read()
print(data)

# 关闭文件
file.close()

2.二进制文件的写

file1 = open('图片2.jpeg', 'wb')
file1.write(data)

# 关闭文件
file.close()

六、CSV文件的读写操作

①CSV文件的写操作

1. 导入csv模块

import csv

2.以utf-8编码和写模式创建或打开 “学生成绩.csv” 文件

wt / rt / at,涉及到文本文件类型的读写时,t可以省略不写

将newline改为’ ',是因为windows的换行定义是 \r \n,Mac定义的换行操作为 \r,Linux定义的换行操作为 \n

统一将newline改为’ ',抵消掉不同系统产生的换行影响

file = open('学生成绩.csv', 'w', encoding='utf-8', newline='')

3.使用csv模块中的writer类对文件对象进行写操作,返回一个具有写功能的writer对象

file_writer = csv.writer(file)

4.写入数据

writerow:单行写入,将一个列表看做一行数据,列表中的每个元素是这一行的单元格

writerows:多行写入,将一个二维列表中的每一个一维列表分别写入其对应的一行,一维列表中的每个元素对应这一行的单元格

columns = ['姓名', '性别', '年龄', '成绩']
students = [['小邱', '男', 21, 50], ['小王', '女', 23, 100], ['小曾', '女', 22, 100], ['小邹', '女', 25, 100]]

file_writer.writerow(columns)
file_writer.writerows(students)

# 关闭文件
file.close()

最后运行打开生成的学生成绩.csv文件,如下显示:

在这里插入图片描述

②CSV文件的读操作

1. 导入csv模块

import csv

2. 打开CSV文件

file = open('学生成绩.csv', 'r', encoding='utf-8')

3. 使用csv模块的reader类对文件进行读操作,返回包含有数据的一个可迭代对象

可迭代对象:能够遍历的数据对象

file_reader = csv.reader(file)
for row in file_reader:
	print(row)

# 关闭文件
file.close()

运行结果:['姓名', '性别', '年龄', '成绩']
         ['小邱', '男', '21', '50']
         ['小王', '女', '23', '100']
         ['小曾', '女', '22', '100']
         ['小邹', '女', '25', '100']

通过观察发现,Pycharm打开的csv文件和txt文本文件几乎没有差别。

csv文件虽然是以表格的样式展示数据,但是csv文件的本质是文本文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

㤅uu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值