import os
技术交流QQ群:1027579432,欢迎你的加入!
Q1.有一个jsonline格式的文件file.txt大小约为10K
```
def get_lines():
    l = []
    with open("file.txt", 'rb') as f:
        for eachline in f:
            l.append(eachline)
    return l
``` - 现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些?
 -    要考虑的问题有:内存只有4G无法一次性读入10G文件,需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小,太小会在读取操作花费过多时间。 
def get_liness(): l = [] with open("file.txt", 'rb') as f: data = f.readlines(60000) l.append(data) yield l 
Q2:补充缺失的代码
def print_file_path(parent_path):
    for child in os.listdir(parent_path):
        child_path = os.path.join(parent_path, child)
        if os.path.isdir(child_path):  # 判断child_path是否是一个目录
            print_file_path(child_path)
        else:
            print(child_path)
if __name__ == '__main__':
    for e in get_lines():
        process(e)  # 处理每一行的数据
京公网安备 11010502036488号