包和文件操作
1.包的使用
1.什么是包
包含__init__.py文件的文件夹就是包
包:用来对模块(py文件)进行分类或者封装
2.怎么使用包中的模块
- import 包名.模块名
包名.模块名.变量 - import 包名.模块名 as 新名
对’包名.模块名’ 进行重命名,命名通过’新名.变量’ 的方式使用变量 - from 包名 import 模块名1, 模块名2…
- from 包名 import 模块名 as 新名
- import 包名.模块名 import 变量
3.定制包的__init__.py文件
不管用什么样的方式导入包或者包中的内容的时候,系统都会先去执行__init__.py文件
2.文件操作
1.数据持久化
- 计算机存储数据
程序中的数据默认情况下都是保存在运行内存中,保存在运行内存中的数据在程序结束后会自动销毁
保存在磁盘中的数据,除非是手动删除或者磁盘损坏,数据会一直存在 - 数据持久化的过程
将程序中的数据通过文件保存在磁盘中,这个过程就是数据持久化的过程
数据持久化的工具:普通文本文件(.txt)、数据库文件(.sqlite、.db)、json文件、plist文件、csv文件、excel文件等
2.文件操作(操作文件内容)
操作文件的基本步骤:打开文件、读写操作、关闭文件
3.python实现文件操作
open(file, mode=‘r’,…, encoding=None) - 以指定的方式打开指定的文件并且返回(返回的是文件对象)
file - 字符串,需要打开的文件路径
路径:
绝对路径 - 文件在计算机中的全路径
相对路径 - 用.来代替文件全路径的部分,只写部分路径
. - 表示当前目录(当前代码文件所在的目录),可省略不写
… - 表示当前目录的上层目录
… - 表示当前目录的上上层目录
mode - 字符串,打开方式(决定打开文件后文件能支持的操作;决定读写数据的类型)
‘r’ - 表示只读(默认)
‘w’ - 表示只写,打开之后会清空原文件
‘a’ - 表示只写,打开之后会保留原文件内容
‘t’ - 表示文本数据,对应str类型(默认)
‘b’ - 表示二进制数据,对应bytes类型
‘rt’/‘tr’/‘r’
‘wt’/‘tw’/‘w’
‘wb’/‘tw’
注意:以读的形式打开一个不存在的文件会报错;
以写的形式打开一个不存在的文件不会报错,并且会自动创建
如果是文本文件,打开的时候可以是b也可以是t
如果是非文本文件,打开的时候只能是’b’
encoding - 设置文本文件的编码方式,一般使用’utf-8’
注意:
1.创建文件和打开文件、读和写对应的编码方式要一致
2.打开的时候如果带’b’,不能设置encoding
1).读
文件对象.read() - 从读写位置开始读到文件结尾
文件对象.seek(0) - 将读写位置移动到文件开头(读的方式打开读写默认位置在文件开头,写的方式打开读写位置默认在文件结尾)
2).写
文件对象.write(数据) - 将指定数据写入文件中(从读写开始写)
3).文件关闭
文件对象.close()
注意:文件关闭后不能再进行读写操作
3.数据持久化
1.怎么做到数据持久化
1)创建一个文件用来保存需要持久化的数据
2)需要这个数据的时候从文件中去获取这个数据
3)如果在程序中对这个数据进行修改,需要将最新的数据更新到文件中
f = open('test/count.txt')
num = int(f.read())
num += 1
print(num)
f = open('test/count.txt', 'w')
f.write(str(num))
f.close()
# 练习2:添加学生
# a.每运行一次程序添加一个学生,并且打印已经添加过的所有的学生
# b.每运行一次程序添加一个学生,并且以列表的形式打印已经添加过的所有的学生
# stu1 -> stu1 ['stu1']
# stu2 -> stu1 stu2 ['stu1', 'stu2']
# 小明 -> stu1 stu2 小明 ['stu1', 'stu2', '小明']
name = input('请输入学生名字:')
f = open('test/student.txt')
result = f.read()
all_students = eval(result)
all_students.append(name)
print(all_students)
f = open('test/student.txt', 'w')
f.write(str(all_students))
f.close()