Day7
1. 文件操作
数据持久性的存储起来
数据从瞬时状态转换为持久状态
open(参数1, 参数2, 参数3…) —> 打开文件,打开的是一个文件对象。
参数1:路径和文件名。
参数2:文件打开的方式(读和写)。
参数3:文件打开的编码形式:utf-8。
1.1 参数1
a. 语法: .(点) 表示当前文件夹(可以省略不写); …表示返回上一级。
b. 文件夹和文件夹之间以及文件夹和文件之间需要使用/间隔。
c. 路径有相对路径和绝对路径之分
- 相对路径:以当前所找参照物为基础,另一个文件相对于参照物的所在位置,应该使用/
- 绝对路径:以磁盘为参照物,使用\
假设目前我处于文件夹B中,如果要找到文件A:…/文件夹A/文件A
1.2 参数2
r、a、w、+等
- r:只读,如果文件不存在,报错。
- w:只写,文件不存在,先自动创建;如果文件存在,先清空(如果某个文件夹不存在,不会创建文件夹)。
- a:只写,文件不存在报错;如果文件存在就是追加。
- +:可读可写,将r、a、w变为可读可写的符号:r+、a+、w+;python操作文件要么读,要么写,不能同时读写。
1.3 参数3
encoding = ‘utf-8’
f = open(r'./6-5-字符串的方法和函数.py', 'r', encoding='utf-8')
# f.read() 从文件对象中读信息
result = f.read()
print(result, type(result))
所有文件在内存中是以二进制形式保存的。
- 参数2:r、w、a、+ ----> 文件编辑方式
- t、b ----> 文件展示形式
- t:文本
- b:字节
- r、w、a等价于rt、wt、at ----> t是默认的,可以不写。
- rb、wb、ab、br、bw、ba表示以字节形式操作文件
f1 = open('./test/管理员.jpg', 'rb')
result = f1.read()
print(result, type(result))
# b'....'代表字节
2. 文件写操作
python操作文件流程
- 新建文件
- 写入内容
- 保存关闭
f = open('./test/咏鹅.txt', 'w', encoding='utf-8')
str_1 = '\t咏鹅\n\t骆宾王\n鹅鹅鹅,曲项向天歌。\n白毛浮绿水,红掌拨清波。'
print(str_1)
f.write(str_1)
f.write('\n 咏 鹅')
f.close() # 不关掉表示文件还在被占用
# f.write('1')
# ValueError: I/O operation on closed file. 关闭之后就不要再写入了
# I/O:Input/Output
运行结果
3. 文件读操作
f = open('./test/咏鹅.txt', 'r', encoding='utf-8')
运行结果
- read():一次性读所有内容,读出来的结果都是字符串
f = open('./test/咏鹅.txt', 'r', encoding='utf-8')
print(f.read())
运行结果
- readline():一次读一行,读出来的结果都是字符串
f = open('./test/咏鹅.txt', 'r', encoding='utf-8')
print(f.readline())
运行结果
- readlines():一次性读全部内容,每一行内容作为列表中的一个元素
f = open('./test/咏鹅.txt', 'r', encoding='utf-8')
print(f.readlines())
运行结果
4. 图片读写操作
- 读取图片
f1 = open('./test/管理员.jpg', 'rb')
result = f1.read()
print(result)
f1.close()
- 下载图片
f2 = open('./test/photo1.jpg', 'wb')
f2.write(result)
f2.close()
运行结果
注:这里出来的是字节,读取时需要图片的二进制形式,之后我们再讲喔
Day7 over!