day 13包和文件操作

day 13包和文件操作

1.包的使用

包含__init__.py文件的文件夹就是包
包用来对py文件(模块)进行分类或者封装
1)import 包名.模块名
包名.模块名.变量
2)import 包名.模块名 as 新名
对 ‘包名.模块名’ 进行重名命,命名通过 ‘新名.变量’ 的方式使用变量
3)from 包名 import 模块名1,模块名2,模块名3,…
模块名.变量
4)from 包名 import 模块名1 as 新模块名1,模块名2,模块名3,…
5)from 包名.模块名 import 变量名1, 变量名2, 变量名3,…
定制包的__init__.py文件
不管用什么样的方式导入包或者包中的内容的时候,系统都会先去执行__init__.py文件

2.文件操作

1)操作文件的基本步骤:打开文件 -> 读/写操作 —> 关闭文件
打开
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'
        注意:只读的方式打开一个不存在文件会报错
             以写的方式打开一个不存在文件不报错,自动创建一个文件
        1) 如果文本文件打开的时候可以是'b'也可以是't';
            如果是非文本文件打开的时候只能带'b'

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

path1 = r'C:\Users\Administrator\Desktop\国庆作业.txt'

相对路径

# . - 代表文件夹 'day13-包和文件操作'
path3 = r'./files/message.txt'
# .. - 代表 '01语言基础'
path4 = r'..'

mode - 读写方式
1)读

f = open('./message.txt', 'rt')
f = open(path1, 'rt', encoding='UTF-8')
print(f.read())

2)写

f = open(path1, 'at', encoding='UTF-8')
f.write('123')
f = open(path1, 'wt', encoding='UTF-8')
f.write('123')

3)打开不存在的文件
只读的方式打开一个文件会报错
以写的方式打开一个文件不报错,自动创建一个文件

open('./message.txt', 'rt') # FileNotFoundError
open('./message.txt', 'wt')
open('./message.txt', 'at')
open('./message.txt', 'at')

4)打开非文本文件

f = open(R'E:\360downloads\314373.jpg', 'rb')
f.read()

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

f = open('./message.txt')
f.close()

3)读写操作

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

文件对象.seek(0) - 将读写位置移动到文件开头(读的方式打开读写位置默认在文件开头,写的方式打开读写位置默认在文件结尾)

2.写
文件对象.write(数据) - 将指定数据写入文件中(从读写位置开始写)

f = open('./message.txt')
print(f.read())
print(f.read())  # 读的位置改变了 所以打印空
f.seek(0)
print(f.read(6))    # 只读取六个字符
f.seek(0)
result = f.read(3)
result = f.read(3)

将数据在到最前面

f = open('files/data.txt')
result = f.read()

result = 'start!\n'+result
f = open('files/data.txt', 'w')
f.write(result)
f.close()

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

1)创建一个为念用老保存需要持久化的数据
2)需要这个数据的时候从文件中去获取这个数据
3)如果在程序中对这个数据进行修改,需要将最新的数据更新到文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值