Day13-包和文件操作
01-包的使用
1.什么是包
包含__init__.py
文件的文件夹就是包
包用来对py
文件(模块)进行分类或者封装
2.怎么使用包中的模块
-
import 包名.模块名
包名.模块名.变量
-
import 包名.模块名 as 新名
对 '包名.模块名' 进行重名命,命名通过 '新名.变量' 的方式使用变量
-
from 包名 import 模块名1,模块名2,...
模块名.变量
-
from 包名 import 模块名1 as 新名,模块名2,...
-
from 包名.模块名 import 变量名1, 变量名2, 变量名3,...
3.定制包的__init__.py
文件
不管用什么样的方式导入包或者包中的内容的时候,系统都会先去执行__init__.py
文件
# __init__.py 文件
# 情况1
# import fileManager.jsonFile as jsonFile
# import fileManager.bytesFile as bytesFile
# 情况2:
# from fileManager import jsonFile, bytesFile
#
# j_func1 = jsonFile.j_func1
# b_func1 = bytesFile.b_func1
# 情况3:
# def read_file():
# print('读文件')
#
#
# print('======init=======')
# 情况1
# import fileManager
# fileManager.jsonFile
# fileManager.bytesFile
# 情况2
# import fileManager
# fileManager.j_func1()
# from fileManager import j_func1
# j_func1()
# 情况3
# import fileManager
# fileManager.read_file()
# from fileManager import read_file
# read_file()
# from test import test1
02-文件操作
1.数据持久化
-
计算机存储数据
程序中的数据默认情况下都是保存在运行内存中,保存在运行内存中的数据在程序结束后会自动销毁。
保存在磁盘中的数据,除非手动删除或者磁盘损坏,数据会一直在。
-
持久化
将程序中的数据保存入文件中。
2.文件操作
操作文件的基本步骤:
打开文件 -> 读、写操作 -> 关闭文件
3.python实现文件操作
-
打开
open(file,mode='r',...,encoding=None)
- 以指定方式打开指定文件file
- 字符串,需要打开的文件路径- 相对路径 - 文件在计算机中全路径
- 绝对路径 - 用
.
来代替文件全路径的部分,只写部分路径.
- 表示当前目录..
- 表示当前目录的上层目录...
mode
- 字符串,打开方式(决定打开文件后文件能支持的操作;决定读写数据的类型)-
'r'
- 表示只读(默认) -
'w'
- 表示只写,打开的时候会先清空文件 -
'a'
- 表示只写,打开的时候会保留原文件内容 -
't'
- 表示文本数据,对应str
类型(默认) -
'b'
- 表示二进制数据,对应bytes类型'rt'/'tr'/'r' 'wt'/'tw'/'w' 'at'/'ta'/'a' 'rb'/'br' 'ab'/'ba' 'wb'/'bw'
-
注意
- 以读的形式打开一个不存在的文件会报错;
以写的形式打开一个不存在的文件不会报错,并且会自动创建 - 如果是文本文件打开的时候可以是’b’也可以是’t’;
如果是非文本文件打开的时候只能带’b’
- 以读的形式打开一个不存在的文件会报错;
encoding
- 设置文本文件的编码方式,一般使用utf-8
- 创建文件和打开文件、读和写对应的编码方式要一致
- 打开的时候如果带’b’,不能设置
encoding
# 1. file - 文件路径 # 1)绝对路径 path1 = '/Users/yuting/授课/Python2004/01语言基础/day13-包和文件操作/files/message.txt' path2 = r'E:\python\PyCharm\01、语言基础\day13 - 包文件操作和异常\files\message.txt' # 2)相对路径 # . - 代表文件夹 'day13-包和文件操作' path3 = './files/message.txt' path4 = 'files/message.txt' # .. - 代表文件夹 '01语言基础' path5 = '../day13-包和文件操作/files/message.txt' open(path5) # 2. mode - 读写方式 # 1)读 f = open(path3, 'rb') result = f.read() # f.write('abc') # io.UnsupportedOperation: not writable print(type(result)) # 'r'/'rt' -> <class 'str'> 'rb' -> <class 'bytes'> # 2)写 f = open(path3, 'a') # f.read() # io.UnsupportedOperation: not readable f.write('') f = open(path3, 'w') # f.read() # io.UnsupportedOperation: not readable f.write('') # 3)打开不存在的文件 # open('./files/test.txt', 'r') # FileNotFoundError # open('./files/test.txt', 'a') # 不报错,自动创建test.txt文件 open('./files/test2.txt', 'w') # 不报错,自动创建test2.txt文件 # 4)打开非文本文件 f = open('files/luffy4.jpg', 'rb') f.read()
-
读写操作
-
读
文件对象.read()
- 从读写位置开始读到文件结尾(适用于所有文件)文件对象.readline()
- 从读写位置开始读到一行结尾(只能用于以’t’打开的文本文件) -
写
文件对象.write(数据)
- 将指定数据写入文件中(从读写位置开始写) -
文件对象.seek()
- 将读写位置移动到文件开头(读的方式打开读写位置默认在文件开头,写的方式打开读写位置默认在文件结尾)
-
03-数据持久化
1.怎么做到数据的持续化
- 创建一个文件用来保存需要持续化的数据
- 需要这个数据的时候从文件中取获取这个数据
- 如果在程序中对这个数据进行修改,需要将最新的数据更新到文件中