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中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
Jun 03 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
python 实现图片裁剪小工具
Feb 02 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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
PHP安全配置
2006/10/09 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
js 代码优化点滴记录
2012/02/19 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
JavaScript运行原理分析
2018/02/09 Javascript
小程序图片剪裁加旋转的示例代码
2018/07/10 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
个人求职信范文分享
2013/12/13 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
工作说明书范文
2014/05/07 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis