day13包和文件操作
1.包的使用
1.什么是包
包:在python中用来专门管理py文件的文件夹,并且在这个文件夹中有一个特殊的文件_init_.py
普通文件夹:项目中的普通文件夹主要是用管理项目需要的非代码文件
2.怎样使用包
采用导入的方式来使用包;导入的方式有四种:
1)* import 包名 -导入后可通过**‘包名.’*去使用_init_.py中定义的所有全局变量
*2)import 包名.模块名 - 导入后通过’包名.模块名.‘*去使用指定模块中的全局变量
3)from 包名 import 模块名 -导入指定包中指定模块,导入后可以通过*’模块名.‘*去使用模块中的全局变量
4)from 包名.模块名 import 变量1,变量2,…- 导入指定包中的指定模块中的指定变量,此变量可直接使用
3. _init_.py文件
1.可在此文件中设置指定默认导入的模块或者模块中的变量
2.定义一些通用的函数
2.文件操作
1.文件操作
1.数据持久化
- 程序使用和产生的数据一般都默认保存在运行内存中,当程序结束后,运行内存中的数据自动销毁
- 如果想要数据不销毁只有通过文件存储到硬盘中
- 将数据保存在硬盘中就是数据持久化,数据不能放到硬盘中,必须通过文件才能办到
- 编程时常见的文件类型:txt、json、plist、数据库
2.文件操作
1)文件操作的基本步骤:打开文件->操作文件(读操作、写操作)->关闭文件
2)打开文件
open(file,mode=‘r’,*,encoding=None)
(1)file—绝对路径:文件在计算机中的全路径
相对路径:. - 当前目录(当前目录指的是当前写打开文件的代码的文件所在的目录)
… - 当前目录的上一层目录
… -当前目录的上一层目录的上一层目录
(2)mode —文件打开方式(决定打开文件后支持的操作是读还是写;决定操作的数据对象是字符串还是二进制)
决定读写方式的值:r、w、a
r - 只读
w - 只写;打开后会清空原文件中的内容
a - 只写;打开后不会清空原文件中的内容
决定操作的数据类型:t(默认值)、b
t - 读到的内容和写入文件中的内容是字符串类型
b - 读到的内容和写入文件中的内容是bytes(二进制)类型
注意:打开文件的时候mode必须在这两组值中每一组选一个,如果第二组的值不选表示选的t
(3) encoding - 文本文件编码方式,一般赋值为 ‘utf-8’
注意: 读写时编码方式要一致,只有文本文件在以 ‘t’ 的形式打开的时候才能设置encoding
2.文件的读写
1.打开文件
以读的形式打开一个不存在的文件,会报错!
以写的形式打开 一个不存在的文件,不会报错,并且会自动创建这个不存在的文件
2.关闭文件
文件对象.close()
注意:文件关闭以后不能再对文件进行操作
自动关闭文件的写法
with open() as 文件对象:
文件作用域
3.操作文件
1)读操作
a.文件对象.read() - 从文件读写位置开始,读到文件结尾
b.文件对象. readline() - 读一行(从读写位置开始,读到一行结束);只能用于文本文件的读操作
c.文件对象.readlines() - 用于读取所有行(直到结束符 EOF)并返回列表 该列表可以由 Python 的 for… in … 结构进行处理。如果碰到结束符 EOF 则返回空字符串。,
with open('sources/aaa.txt', encoding='utf-8') as f:
result = f.readlines()
print(result) # ['床前明月光,\n', '疑是地上霜;\n', '举头望明月,\n', '低头思故乡。']
2)写操作
文件对象.write(数据)
a.在文件最后追加新的内容,用’a‘
with open('sources/test.txt', 'a', encoding='utf-8') as f:
f.write('\n请添加内容')
b.在文件最开头添加新的内容
# 练习:删除原文件第三行的内容
with open(r'sources\aaa.txt',encoding='utf-8') as f:
re=f.readlines()
if len(re)>=3:
re.pop(2)
new_re=''.join(re)
with open(r'sources\aaa.txt','w',encoding='utf-8') as f:
f.write(new_re)
作业:数据持久:登录注册