day13-包和文件操作

本文详细介绍了Python中包的使用,包括模块导入方式,以及如何编写和使用__init__.py进行简化。此外,深入讲解了文件操作,如数据持久化的方法、文件打开、读写和关闭,以及如何通过文本文件实现数据持久化。
摘要由CSDN通过智能技术生成

包和文件操作

1.什么是包

包含__init__.py的文件的文件夹就是包
包用来对py文件(模块)进行分类或者封装

2.怎么使用包中的模块

  1. import 包名.模块名
    包名.模块名.变量

  2. import 包名.模块名 as 模块名1
    对’包名.模块名’进行重命名,命名通过 '模块名1.变量’的方式使用变量

  3. 通过from 导入包
    from 包名 import 模块名1, 模块名2,…
    使用: 模块名.变量

  4. from 包名 import 模块名1 as 新模块名1, 模块名2 as 新模块名2,…

  5. from 包名.模块名 import 变量1, 变量2, 变量3,…

3.定制包的__init__.py文件

不管用什么样的方式导入包或者保重的内容的时候,系统都会先去执行__init__.py文件
可以在__init__.py 对包中某些高频函数或者变量简化使用

文件操作

1.数据持久化

  1. 计算机存储数据
    程序中的数据默认情况下都是保存在运行内存中,保存在运行内存中的数据在程序结束后会自动销毁
    保存在磁盘中的数据除非手动删除或者磁盘损坏,数据会一直存在
  2. 持久化
    将程序中的数据通过文件保存在磁盘中,这个过程就是数据持久化的过程
    持久化工具:文本文件(.txt)、数据库文件(.db, .sqlite)、json文件、plist文件、csv文件、
    excel等

2.文件操作(操作文件内容)

操作文件的基本步骤:打开文件(open) -> 读写(rw) -> 关闭文件(close)

3.python实现文件操作

  1. 打开
    open(file, mode=‘r’,…, encoding=None) - 以指定的方式打开指定的文件
    并返回(返回的是文件对象)
    file - 字符串, 需要打开的文件路径
    路径:
    绝对路径 - 文件在计算机中的全路径,在开始位置用r’路径’
    相对路径 - 用 . 来代替文件全路径的部分, 只写部分路径;
    . - 表示当前目录(当前代码文件所在的文件目录(可省略))
    … - 表示当前目录的上层目录
    … - 表示当前目录的上层目录的上层目录

mode - 字符串, 打开方式(决定打开文件后文件能支持的操作; 决定读写数据的类型)
‘r’ - 表示只读(默认)
‘w’ - 表示只写, 打开的时候会清空文件, 如果文件不存在会自动创建文件
‘a’ - 表示只写, 打开的时候不会清空文件,如果文件不存在会自动创建文件
‘t’ - 表示文本数据, 对应str类型
‘b’ - 表示二进制数据, 对应bytes类型
注意:
1) 以读的形式打开一个不存在的文件会报错;
以写的形式打开一个不存在的文件不会报错,并且会自动创建
2) 如果是文本文件打开的时候可以是’b’或’t’,如果是非文本文件只能通过’b’

encoding - 设置文本文件的编码方式, 一般使用’utf-8’
注意: 1) 创建文件和打开文件、读和写对应的编码方式要一致
2) 打开的时候如果带’b’, 不能设置encoding

  1. 关闭
    注意:文件关闭后不能进行读写操作
    文件对象.close()

  2. 读写操作
    1.读
    文件对象.read() - 从读写位置开始读到文件结尾
    文件对象.readline() - 从读写位置开始到读到一行结尾(只能用于以’t’打开的文本文件)

2.写
文件对象.write(数据) - 将指定数据写入文件中(从读写位置开始写)
文件对象.seek(0) - 将光标移动到文件开头(读的方式打开读写位置默认在文件开头,写的方式打开
读写位置默认在结尾)

1.怎么做到数据的持久化

  1. 创建一个文件保存需要持久化的数据
  2. 需要这个数据的时候从文件中获取数据
  3. 如果在程序中对这个数据进行了修改, 需要将最新的数据更新到文件中
f = open('test.txt', 'r', encoding='utf-8')
num = int(f.read())
num += 1
print(num)

f = open('test.txt', 'w', encoding='utf-8')
f.write(str(num))
f.close()
练习2:添加学生
a.每运行一次程序添加一个学生,并且打印已经添加过的所有的学生
b.每运行一次程序添加一个学生,并且以列表的形式打印已经添加过的所有的学生
a.
stu1  -> stu1        ['stu1']
stu2  -> stu1 stu2   ['stu1', 'stu2']
小明   -> stu1 stu2 小明   ['stu1', 'stu2', '小明']
f = open('test1.txt', 'r', encoding='utf-8')
str1 = f.read()
str2 = input("请输入添加学生姓名:")
str1 = f'{str1} {str2}'
f = open('test1.txt', 'w', encoding='utf-8')
f.write(str1)
f.close()
b.
str2 = input("student_name:")
f = open('test1.txt', 'r+', encoding='utf-8')
result = f.read()
all_student = eval(result)

all_student.append(str2)
print(all_student)
f = open('test1.txt', 'w', encoding='utf-8')
f.write(str(all_student))
f.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值