第13天 包和文件操作

it2024-01-06  60

一、包的使用

1.什么包

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

2.怎么使用包中的模块

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,…

导入方式1

import fileManager.jsonFile

print(fileManager.jsonFile.j_a)

fileManager.jsonFile.j_func1()

导入方式2

import fileManager.jsonFile as jsonFile

jsonFile.j_func1()

print(jsonFile.j_a)

导入方式3

## from fileManager import jsonFile, bytesFile ## print(jsonFile.j_a) ## jsonFile.j_func1() ## print(bytesFile.b_a) #### bytesFile.b_func1() ## 导入方式5 # from fileManager.jsonFile import j_func1, j_a # j_func1() # print(j_a)

3.定制包的__init__.py文件

不管用什么样的方式导入包或者包中的内容的时候,系统都会先去执行__init__.py文件

## 情况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

二、文件操作

1.数据持久化

1)计算机存储数据 程序中的数据默认情况下都是保存在运行内存中,保存在运行内存中的数据在程序结束后会自动销毁。 保存在磁盘中数据,除非手动删除或者磁盘损坏,数据会一直存在。

2)持久化 将程序中的数据通过文件保存在磁盘中,这个过程就是数据持久化的过程。 持久化工具:普通文本文件(.txt)、数据库文件(.sqlite、.db)、json文件、plist文件、csv文件、excel文件等

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

操作文件的基本步骤:打开文件 -> 读/写操作 -> 关闭文件

3.python实现文件操作

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) 以读的形式打开一个不存在的文件会报错; 以写的形式打开一个不存在的文件不会报错,并且会自动创建 2) 如果是文本文件打开的时候可以是'b'也可以是't'; 如果是非文本文件打开的时候只能带'b'

encoding - 设置文本文件的编码方式,一般使用’utf-8’ 注意: 1)创建文件和打开文件、 读和写对应的编码方式要一致 2)打开的时候如果带’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()

=2)关闭

文件对象.close()

注意:文件关闭后不能再进行读写操作

f = open(path3) f.close()

f.read() # ValueError: I/O operation on closed file.

# =3)读写操作========

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

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

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

f = open('files/data.txt') result = f.read() print('第一次读:', result) f.seek(0) result = f.read() print('第二次读:', result) f.seek(0) result = f.readline() print('读一行:', result) result = f.readline() print('读第二行:', result) # f = open('files/data.txt', 'a') # f.seek(0) # 无法改变写的位置 # f.write('start!\n') # 将数据在到最前面 f = open('files/data.txt') result = f.read() result = 'start!\n'+result f = open('files/data.txt', 'w') f.write(result) f.close()

三、数据持久化

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

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

最新回复(0)