文件
文件打开
File = open(orginPath, "r", -1, encoding="utf-8", errors="strict")
1. open函数
- 参数1:源文件路径
- 参数2:打开方式(r-读,w-写)
- 参数3:...
- 参数4:编码方式
- 参数5:错误检查级别(strict-严格检查,编码有问题就报错、ignore-错误忽略)
文件关闭
file.close()
文件关闭注意点
- 文件如果不关闭有可能数据没有写进文件
- 文件关闭会将数据写入文件中
文件读取
read函数
file.read()
file.read(10)
read函数注意点
- read方法如果不加参数是默认读取所有数据
- read方法如果加参数是读取N个字符的意思
readline函数
line = file.readline()
readline函数注意点
- 如果没有读取到数据会为None
- 一次读取的是一行数据
readlines函数
lineList = file.readlines()
readlines函数注意点
- 读取的是所有的数据
- 数据以每一行数据形成的列表组成的
将对象写入文件
import pickle
myList = [1,2,3,4]
file = open(r"1.txt","wb")
pickle.dump(myList,file) # 保存List到文件
file.close()
将对象从文件中导出
import pickle
file = open(r"1.txt","rb")
myList = pickle.load(file) # 保存List到文件
file.close()
文件内存模式读取数据
lineList = file.readlines()
文件内存模式读取注意点
- 文件读取数据被保存在了list列表中
文件硬盘模式读取数据
line = file.readline()
文件硬盘模式读取注意点
- 文件是一行一行被读取在内存中,每一行的数据都被回收了,所以不耗费内存
文件简单加密
文件简单解密
二进制加密
二进制解密
二进制密码加密
二进制密码解密
文件切割
文件排序
文件归并排序
文件夹归并排序
内存版二分查找(高速检索)
大Bug
- 生成索引只能用rb进行读取源文件(必要)
- 操蛋的索引,索引写入文件的长度一定要大于等于源文件字节的长度(操蛋,浪费老子半天)
- 一定要记录要查找的文件的条数(必要)
硬盘版二分查找(高速检索)
- 就是将索引生成在硬盘里,不用加换行符
索引排序法硬盘版二分查找
- 这个不需要源文件进行排序,只需要对索引进行排序(索引文件如果太大也会有问题)
with...as...
- 自动关闭文件
with...as...的用法
with open(path, "r", errors="ignore") as file:
line = file.readline()
with...as... 与 for 的用法对比
with open(path, "r", errors="ignore") as file:
line = file.readline()
print(line)
for line in open(path, "r", errors="ignore"):
print(line)
with...as...组合用法
with open(path, "r", errors="ignore") as file, open(path2, "w") as file2, open(path3, "w") as file3:
line = file.readline()
file2.write(line)
file3.write(line)
深度遍历(栈实现)
- 某一条线一直挖下去,之后才会返回
广度遍历(队列实现)
- 整体遍历完之后才会深入