对比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 pdG = 1024.0*1024.0*1024.0def 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)print u'内存占比:', info.percentprint u'cpu个数:', psutil.cpu_count()def csv_test():print '############## csv info ################ \n\n'show_sys_info()file_name = 'test.csv'csvFile = open(file_name, "r")reader = csv.reader(csvFile)count = 0for item in reader:count += 1print 'count%d' % count# print reader.__dict__print 'file_size:%s MB' % get_FileSize(file_name)show_sys_info()def excel_info():print '############## excel info ################ \n\n'show_sys_info()file_name = 'test.xlsx'print 'file_size:%s MB' % get_FileSize(file_name)xlrd.open_workbook(filename=file_name)show_sys_info()def get_FileSize(filePath):filePath = unicode(filePath,'utf8')fsize = os.path.getsize(filePath)fsize = fsize/float(1024*1024)return round(fsize,2)if __name__ ==  '__main__':csv_test()excel_info()

结果:

############## csv info ################ now 2019-05-17-13:05:46
内存使用: 0.01
总内存: 16.0
内存占比: 62.5
cpu个数: 8
count309990
file_size:28.9 MB
now 2019-05-17-13:05:46
内存使用: 0.01
总内存: 16.0
内存占比: 62.6
cpu个数: 8
############## excel info ################ now 2019-05-17-13:05:46
内存使用: 0.01
总内存: 16.0
内存占比: 62.6
cpu个数: 8
file_size:66.02 MB
now 2019-05-17-13:07:33
内存使用: 0.47
总内存: 16.0
内存占比: 64.3
cpu个数: 8

分析

相同的文件内容下

方式 文件大小 加载时间 内存使用
csv 28.9M 1s 0M
excel 66.02M 100s 0.46G

通过以上对比,csv 更适合。

csv excel 对比相关推荐

  1. python怎么筛选excel数据_python筛选数据excel表格-如何利用python提取两个excel对比后的重复值的信息?...

    怎么用python读取excel表格的数据 import xlrd #open the .xls file xlsname="test.xls" book = xlrd.open_ ...

  2. Python 自动化办公之 Excel 对比工具

    作者 | 周萝卜 来源丨萝卜大杂烩 今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于 ...

  3. Python自动化办公之Excel对比工具

    今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于工作当中经常需要对比前后两个 Exc ...

  4. 数据库数据 与 excel 对比。(项目一)

    0.python 与 mysql 连接(增删改查) python 与 mysql 连接(增删改查)_Jack_2085的博客-CSDN博客1.查询数据库的某一张表#!/usr/bin/python# ...

  5. R-数据加载(csv,excel,txt,rdata,spss,stata)

    原始数据可以从本地文件,本地数据库和网络上获取.本地文件主要包括:txt文件,csv文件,excel文件,RData文件,xml文件.本地数据库类型包括SQL Server,Access,MySQL, ...

  6. RationalDMIS 7.1 调用EASL_GET_T_V宏来将公差输出到CSV/EXCEL

    RationalDMIS变量数据区内置一个EASL_GET_T_V宏,此宏的功能是将公差计算结果的实际值.理论值.公差带/上下公差.超差值取成变量存储在变量数据区: 操作过程如下: 双击GET_T_V ...

  7. RationalDMIS 7.1调用EASI_GET_T_V宏来将公差输出到CSV/EXCEL

    RationalDMIS变量数据区内置一个EASI_GET_T_V宏,此宏的功能是将公差计算结果的实际值.理论值.公差带/上下公差.超差值取成变量存储在变量数据区: 操作过程如下: 双击GET_T_V ...

  8. excel对比_质量管理误区:SPC软件与微软Excel的应用对比

    微软Excel能够利用已有的数据进行多种图表和表格的制作.虽然在一些小型的SPC项目中,Excel能够完成部分的分析工作,但是对于整体生产过程的质量控制和管理来讲,Excel是无法实现对于品质管理的有 ...

  9. 【Python7】csv/excel/matplotlib,排序/树遍历,线/进程,文件/xml操作,百度人脸API,aiohttp/hal/restful/curl

    文章目录 1.csv 2.excel 3.matplotlib 4.时间复杂度 5.顺序表/链表 6.六种排序 6.1 选择 6.2 插入 6.3 希尔 6.4 冒泡 6.5 快排 6.6 归并 7. ...

  10. navicat导入CSV/Excel文件

    1)创建数据库 2)打开数据库project_1,点击"导入向导",导入类型选择"csv文件". 3)选择CSV文件数据源. 4)选择分隔符 csv文件文本打开 ...

最新文章

  1. 解决SVN:E210007无法协商认证机制
  2. 鸿蒙os2.0开发者beta版,鸿蒙 OS 2.0 开发者beta版针对Mate 40系列设备开放
  3. Stackint stack = new Stackint报错原因
  4. pythonlambda回调函数_Python中如何借助lambda来给回调函数传参
  5. Intellij IDEA配置优化--转载
  6. 深度学习TF—9.循环神经网络RNN及其变体GRU、LSTM
  7. 设计模式之构造函数模式
  8. linux 终端翻译,linux下终端使用有道翻译
  9. 读书笔记之《好好说话》
  10. android 自动读取短息,Android实现短信验证码自动拦截读取功能
  11. Redis源码解析(15) 哨兵机制[2] 信息同步与TILT模式
  12. 钉短信、钉电话收费套餐
  13. python爬虫王者荣耀高清皮肤大图背景故事通用爬虫
  14. 单片机方案|口袋秤芯片方案
  15. 在mysql怎样查询地址和电话_如何使用mysql查询语句从用户手机号中提取纯号码...
  16. 印象笔记多PC不能同步问题的解决
  17. Vue基于JSON Schema生成表单和数据校验
  18. redis缓存失效时间设为多少_Redis有效时间设置及时间过期处理
  19. 看图四级作文 快速技术的发展计算机,2017年6月四级作文范文:科技发展的影响...
  20. FC小游戏合集网页版HTML源码

热门文章

  1. diy个人级超级计算机,八核+七卡!泡泡网DIY个人超级计算机
  2. 年会抽奖(错排算法)
  3. freeswitch安装
  4. 【机器学习-周志华】学习笔记-第十章
  5. java静态链表_Java数据结构-线性表之静态链表
  6. Qt学习(一)ui界面的设计
  7. 在开发IE插件时,遇到的各种问题记录
  8. mysql 删除的sql语句怎么写_mysql教程删除数据sql语句用法
  9. Pyserial库使用心得
  10. 数据结构:图的基本概念