晒晒我家小院子

0%

复习笔记

4G 内存怎么读取一个 5G 的数据?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 方法一:
# 生成器,分多次读取
def my_read(file, separator): # 流对象,分隔符
buffer = ""
while True:
while separator in buffer: # 此处while比if更合适, 处理buffer有多个separator
pos = buffer.index(separator) # 获取第一个下标
yield separator[:pos]
buffer = buffer[pos + len(separator):]
chunk = file.read(2000) # 太小也会降低效率
if not chunk:
yield buffer
break
buffer = buffer + chunk

with open('f.txt', 'r') as f:
for line in my_read(f, separator='\n'):
print(line)
1
2
3
4
# 方法二:
# linux命令split切割成小文件
split -l 300 big.txt -d -a 4 big_ # 系数不是字母而是数字(-d),后缀系数为四位数(-a 4)
split -b 10m big.txt big_ # 按照大小切割
-------------本文结束感谢您的阅读-------------