对比csv excel 处理
目前项目需要上传非常大的excel文件。几百兆到几个G之间。上传的问题还没有解决。但是load到内存也是个问题。excel 一般使用xlrd 包做解析,第一个操作肯定是open_workbook。但是在open_workbook的时候会把整个文件load 到内存,如果多个文件同时在做处理可能会内存溢出,所以存在很大风险。技术上对比csv. 看看两者个差异。
准备工作
一个比较大的excel 文件 66MB。把它转为csv。(excel 另存为)
python 编码以及准备
相关的库 pip intsall
import csv
import psutil
import xlrd
psutil 是为了获取系统内存等一些状况。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import xlrd
import psutil
import os
import time
import csv
import pandas as pd
G = 1024.0*1024.0*1024.0
def now():
return time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
def get_G(memory):
return round(memory / G, 2)
def show_sys_info():
info = psutil.virtual_memory()
print 'now', now()
print u'内存使用:', get_G(psutil.Process(os.getpid()).memory_info().rss)
print u'总内存:', get_G(info.total