一、包
1.什么是包
- 包是python程序中一种专门用来管理py文件的文件夹,这个文件中有一个特殊文件:_init_.py,(项目中的普通文件夹一般用来管理,项目需要的代码文件)
2.怎样使用包中的内容
-
import 包,导入后可以通过’包名.'去使用这个包中
import fileManager
-
import 包名.模块名,导入后可以通过’包名.模块名.'去使用指定模块中所有的全局变量, import fileManager.file
fileManager.file.read_file()
fileManager.file.get_file()
import fileManager.file as file
file.read_file()
file.get_file()
-
from 包名 import 模块名,倒入指定包中的指定模块,导入后可以通过’模块名‘去使用模块中所有的全局变量 from fileManager import file
file.get_file()
file.read_file()
-
from 包名.模块名 import 变量名1,变量名2,…,导入指定包中的指定模块中的指定变量,变量在用的时候直接用 from fileManager.file import read_file, get_file
print(get_file())
print(read_file())
二、文件操作
1.内存
- 运行内存, 硬盘;数据持久化
- 程序中使用和产生的数据默认都是保存在运行内存中的,当程序结束后,运行内存中的数据全部会被自动销毁。
- 如果想要数据在程序结束后不销毁,就需要将数据通过文件存储到硬盘中。
- 将数据保存到硬盘中,就是数据持久化(注意:数据不能直接放到硬盘中,必须要通过文件)
- 编程的时候常见的文件类型:txt、json、plist、数据库
2.文件操作
- 基本步骤:打开文件 -> 操作文件(读操作、写操作) -> 关闭文件
- 打开文件: open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)、
- file:指的是需要打开的文件的路径,绝对路径:文件在计算机中的全路径;
? 相对路径:用.表示当前目录;用…表示当前目录的上层目录;…;… - mode:决定文件的打开方式(决定打开文件之后支持的操作是读还是写;决定操作的数据对象是字符串还是二进制)
- 决定读写方式的值:r、w、a、+
- 决定操作的数据类型:t(默认值)、b
- 打开文件的时候mode必须在这两组值中每一组选一个,如果第二组的值不选表示选的t
- ‘r’ - open for reading (default) 只读,
- ‘w’ - open for writing, truncating the file first 只写:打开后会删除原文件的内容
- ‘x’ - create a new file and open it for writing
- ‘a’ - open for writing, appending to the end of the file if it exists 只写:会将新的内容添加到原文件内容的后面。
- ‘b’ - binary mode 打开的文件中的内容是二进制类型bytes
- ‘t’ - text mode (default) 打开文件之后,读写的文件的格式是字符串,t表示操作对象。
- ‘+’ - open a disk file for updating (reading and writing)
- ‘U’ - universal newline mode (deprecated)
- encoding - 文本文件编码方式,一般赋值为’utf-8‘
- 注意:读和写的编码方式不一样
? 只有文本文件在以t的形式打开的时候才能设置encoding
2.路径
3.打开方式
-
f = open('./files/test.txt', 'rt')
result = f.read()
print(type(result))
-
f = open('./files/test.txt', 'rb')
result = f.read()
print(type(result))
-
f = open('./files/test.txt', 'r')
result = f.read()
print(type(result))
-
f = open('./files/test.txt', 'at')
f.write('abc')
-
f = open('./files/test.txt', 'ab')
f.write(bytes('abc', encoding='utf-8'))
-
f = open('./files/test.txt', 'wt')
f.write('abc')
三、文件的读写
1.打开文件
-
以读的形式打开一个不存在的文件,会报错! f = open('files/test.txt')
-
以写的形式打开一个不存在的文件不会报错,并且会自动创建不存在的文件 f = open('files/aaa.txt', 'a')
2.关闭文件
-
文件对象.close() -
注意:文件关闭后不能再对文件进行操作 f = open('./files/aaa.txt')
f.close()
f.read()
-
自动关闭文件的写法 -
with open() as 文件对象: ? 文件作用域 with open('./files/aaa.txt') as f:
f.read()
f.seek(0)
result = f.read()
print('第二次读\n', result)
3.操作文件
-
读操作
with open('./files/test.txt', 'rb') as f:
result = f.read()
- 文件对象.readline() - 读一行(从读写位置,读到一行结束);只能用于文本文件的读操作
with open('files/test.txt', encoding='utf-8') as f:
result1 = f.readline()
print(result1)
result2 = f.readline()
print(result2)
result3 = f.read()
print(result3)
- 练习:使用readline将文件中的内容一行一行的读,读完为止
with open('files/test.txt', encoding='utf-8') as f:
while True:
result = f.readline()
if not result:
break
print(result)
-
写操作
-
文件对象.write(数据) -
在文件最后追加新的内容 with open('files/test.txt', 'at', encoding='utf-8') as f:
f.write('\n======================')
在文件最开头添加新的内容
with open('files/test.txt', encoding='utf-8') as f:
result = f.read()
print(result)
-
with open('files/test.txt', 'w', encoding='utf-8') as f:
result = '============\n' + result
f.write(result)
result = result.replace('据', 'bed')
f.write(result)
-
练习:删除原文第3行的删掉 with open('files/test.txt', encoding='utf-8') as f:
result = f.readlines()
with open('files/test.txt', 'w', encoding='utf-8') as f:
result = ''.join(result[:2] + result[3:])
f.write(result)
print(f.write(result))
|