一、数据持久化:将数据从瞬时状态转换为持久状态。
文本文件、表格文件
二、Python操作文件
操作文本文件:新建(重命名) -> 打开 -> 写数据 -> 保存关闭
打开 -> 读数据 ->关闭
表格文件(excel):新建 -> 打开 ->写数据 -> 保存、关闭、重命名
打开 -> 读数据 -> 关闭
三、文件操作形式:a. 以什么形式操作文件 。b.以什么数据类型操作文件。
a.以什么形式操作文件:读、写
r : 只读、文件不存在,报错。
w : 只写,文件不存在,先创建。如果文件存在,先清空
a : 追加,文件不存在,先创建。文件存在,继续添加内容。
b.以什么数据类型操作文件。
t :字符串形式(如果选t,可以不写,默认。r等价于rt、tr)。
b:二进制形式。一般计算机中存储的书库都是以二进制形式存在的(图片,音频、视频等)
四、文件操作形式应该怎样使用
从"以什么形式操作文件"和"以什么数据类型操作文件"各自人选其一组合使用
‘rt’ ,‘rb’ , ‘tr’ ,‘br’ 等
文件操作:
open(参数1,参数2,参数3,参数4)
参数1:文件路径
参数2:文件操作模式
参数3:编码方式 encoding = ‘utf-8’
参数4:换行方式,newline = ‘’(读的操作不需要指定)
windows::\r \n ;mac:\r ; linue :\n
补充:\r将鼠标光标移动到下一行行首
文件路径分为:相对路径、绝对路径
绝对路径:一个文件存放在那个磁盘下的什么文件夹(能不用尽量不用)
D:\\user\word\test.txt
相对路径:以当前文件为参照物,另一个文件相对于他的位置
.表示当前目录
..表示返回上一级
/文件夹和文件夹之间以及文件夹和文件之间间隔的符号
以文件对象的形式打开已存在文件
file = open(‘文件名’,‘r’,encoding = ‘utf - 8’)
file = open(‘文件名’,‘r’,encoding = ‘gbk’)
print(ile)
读操作:read、readline、readlines
read:一次性将文件中内容以字符串的形式全部读取出来。
result = file.read()
readline:每次只读一行,结果为字符串类型
result1 = file.readline()
result2 = file.readline()
result3 = file.readline()
result4 = file.readline()
print(result1, result2, result3, result4)
readlines:一次性将所有行读出来,结果为列表,每一行是列表中的每个元素
result5 = file.readlines()
print(result5
关闭文件:
file.close()
文件的写操作:
file = open(‘文件名’,‘w’,encoding = ‘utf - 8’,newline= ‘’)
write:向文件写入内容
str1 = ‘静夜思\n唐 李白\n床前明月光\n疑是地上霜\n’
file.write(str1)
file.close()
读操作和写操作编码要保持一致
操作完文件后一定要保存关闭:file.close()
预定义的清理操作:with
只要退出了with的缩进,直接执行清理操作,将文件关掉
with open('古诗.txt', 'r', encoding='utf-8') as file:
result = file.read()
print(result)
print(file.read()) #退出了缩进
python读写图片和视频:
将图片二进制读出来:
file = open(‘图片的路径’,‘r’)
result = file.read()
file.close()
二进制字节码:b’xxxxxx’
将图片二进制数据写回去
file = open(“新建的路径”,‘wb’) # b是二进制格式,新建的图片,视频格式后缀和读出来的一致
file.write(result)
file.close()
CSV文件:
CSV文件中的数据是以表格形式展示,但是其中的原理是文本文件的原理。
import csv
file = open(‘csv文件路径’,‘w’,encoding = ‘utf-8’,newline = ‘’)
使用CSV模块提供的writer方法进行文件写操作
cev.writer(file),
为了方便写。让A = cev.writer(file)
writerow() - 单行写入,writerow中传递一个列表,列表表示一行,
列表中的一个元素代表一个单元格的内容
A.writerow([‘编号’,‘姓名’,‘年龄’,‘专业’])
writerows() - 多行写入,writerows中传递一个列表,列表中有几个元素代表写几行,
其中的每个元素就是表示一行内容的小列表
myWrite.writerows(
[
['python001', '张三', '18', '计算机科学与技术'],
['python001', '张三', '18', '计算机科学与技术'],
['python001', '张三', '18', '计算机科学与技术']
]
)
file.close()
csv.reader得到一个可迭代对象
data = csv.reader(file)
for i in data:
print(i)
file.close()