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 相关文章推荐
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
详解Python3 pickle模块用法
Sep 16 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
解决jupyter运行pyqt代码内核重启的问题
Apr 16 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
Matplotlib.pyplot 三维绘图的实现示例
Jul 28 Python
Python如何实现线程间通信
Jul 30 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
python神经网络学习 使用Keras进行回归运算
May 04 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
Laravel 连接(Join)示例
2019/10/16 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
IE 条件注释详解总结(附实例代码)
2009/08/29 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
js 居中漂浮广告
2010/03/21 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
js重写方法的简单实现
2016/07/10 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue input 输入校验字母数字组合且长度小于30的实现代码
2018/05/16 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
CSS3伪类选择器:nth-child()
2009/04/02 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
微型企业创业投资计划书
2014/01/10 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL