python3大文件解压和基本操作


Posted in Python onDecember 15, 2017

先说下:所谓的大文件并不是压缩文件有多大,几十兆的文件而是解压后几百兆。其中就遇到解压不成功的情况.、读小文件时成功,大文件时失败等

def unzip_to_txt_plus(zipfilename):
  zfile = zipfile.ZipFile(zipfilename, 'r')
  for filename in zfile.namelist():
    data = zfile.read(filename)
    # data = data.decode('gbk').encode('utf-8')
    data = data.decode('gbk', 'ignore').encode('utf-8')
    file = open(filename, 'w+b')
    file.write(data)
    file.close()


if __name__ == '__main__':
  zipfilename = "E:\\share\\python_excel\\zip_to_database\\20171025.zip"
  unzip_to_txt_plus(zipfilename)

注意参数:‘ignore' ,因为默认是严格编码,如果不加这个参数就会报错。
因为该函数已经把文件编成utf-8 所以后面读取文件时成功,下面贴出读取大文件代码(忽略数据库相关)

# - coding: utf-8 -
import csv
import linecache
import xlrd
import MySQLdb


def txt_todatabase(filename, linenum):
   # with open(filename, "r", encoding="gbk") as csvfile:
   #   Read = csv.reader(csvfile)
   #   count =0
   #   for i in Read:
   #   #   print(i)
   #      count += 1
   #      # print('hello')
   #   print(count)
   count = linecache.getline(filename, linenum)
   print(count)
   # with open("new20171028.csv", "w", newline="") as datacsv:
   #   # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
   #   csvwriter = csv.writer(datacsv, dialect=("excel"))
   #   # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
   #   csvwriter.writerow(["A", "B", "C", "D"])


def bigtxt_read(filename):
  with open(filename, 'r', encoding='utf-8') as data:
    count =0
    while 1:
      count += 1
      line = data.readline()
      if 1000000 == count:
        print(line)
      if not line:
        break
    print(count)


if __name__ == '__main__':
  filename = '20171025.txt'
  txt_todatabase(filename, 1000000)
  bigtxt_read(filename)

经过对比,发现两个速度基本一样快。两百万行的数据是没压力的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
浅析Python中的多重继承
Apr 28 Python
Python中字典(dict)合并的四种方法总结
Aug 10 Python
virtualenv实现多个版本Python共存
Aug 21 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
python对文件目录的操作方法实例总结
Jun 24 Python
Python实现基于SVM的分类器的方法
Jul 19 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 #Python
numpy自动生成数组详解
Dec 15 #Python
Python3实现发送QQ邮件功能(附件)
Dec 23 #Python
numpy排序与集合运算用法示例
Dec 15 #Python
Python3实现发送QQ邮件功能(html)
Dec 15 #Python
Python3实现发送QQ邮件功能(文本)
Dec 15 #Python
numpy数组拼接简单示例
Dec 15 #Python
You might like
操作Oracle的php类
2006/10/09 PHP
一个程序下载的管理程序(二)
2006/10/09 PHP
文件上传程序的全部源码
2006/10/09 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
js实现录音上传功能
2019/11/22 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
python 控制语句
2011/11/03 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python 数据结构之堆栈实例代码
2017/01/22 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
Python for i in range ()用法详解
2020/09/18 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
幼儿园毕业园长感言
2014/02/24 职场文书
文化建设工作方案
2014/05/12 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
中队活动总结
2014/08/27 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
python如何获取网络数据
2021/04/11 Python