当前位置: 首页 > news >正文

python 切割大文本的库_python切割大数据文件(文本)成多个小文件

一、代码

重复造轮子的事情在下是不干的,不过朋友做光学试验要求将12G的文件切割为小文件。

这有点考验人啊,不过在万能的搜索引擎帮助下成功解决了问题。

代码如下:

# -*- coding: utf-8 -*-

import os

import time

def mkSubFile(lines,srcName,sub):

[des_filename, extname] = os.path.splitext(srcName)

filename = des_filename + '_' + str(sub) + extname

print( 'make file: %s' %filename)

fout = open(filename,'w')

try:

#fout.writelines([head])

fout.writelines(lines)

return sub + 1

finally:

fout.close()

def splitByLineCount(filename,count):

fin = open(filename,'r')

try:

#head = fin.readline()

buf = []

sub = 1

for line in fin:

buf.append(line)

if len(buf) == count:

sub = mkSubFile(buf,filename,sub)

buf = []

if len(buf) != 0:

sub = mkSubFile(buf,filename,sub)

finally:

fin.close()

if __name__ == '__main__':

begin = time.time()

splitByLineCount('D_1kk.dat',10*1000)

end = time.time()

print('time is %d seconds ' % (end - begin))

函数splitByLineCount参数二为每个小文件的行数。点击下载文件:python_split_file.py.zip

二、启示

1、在读取文件的时候需要api从磁盘中逐一加载,也就是并不会一下子加载进来,加载多少由自己的程序控制。

2、磁盘的磁头是跟着api的读取进度移动的,也就是读到哪里,磁头就在哪里。

3、是否有中api可以随机移动磁头的呢?java的RandomAccessFile类支持程序可以跳转到文件的任意地方来读写数据,即随机访问模式。不用重新打开文件就可以定位磁头到任何一处。

相关文章:

  • 3 x 10的python表达式_part10-3 Python常见模块(正则表达式)
  • 可视化报表制作教程_聊聊大屏数据可视化
  • 塞尔达传说gba_《塞尔达传说》系列进化史 画面精美,探索内容更丰富
  • SQL SERVER DBCC命令解释
  • python 输出数据成行_python dataframe 输出结果整行显示的方法
  • python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...
  • SSIS:用foreach loop将一个目录下的内容导入到数据库中
  • 必须声明标量变量 @sum_level。_C++ Primer 笔记 - 变量
  • JAVA 中URL链接中文参数乱码的处理方法
  • 宝乐机器人集团作_「驰众机器人|情报」秦川集团起草的《机器人用精密摆线齿轮减速器》标准获发布...
  • java读取xml文件操作
  • 5ecsgo启动失败2错误代码2_Spring Boot 2.2 增加了一个新功能,启动飞起~
  • 现代科技概论_现代科技概论课程:力与运动3
  • 负载均衡技术全攻略
  • opencv图像分割python毕业设计_python用opencv完成图像分割并进行目标物的提取
  • Angular6错误 Service: No provider for Renderer2
  • Docker入门(二) - Dockerfile
  • Hibernate最全面试题
  • Odoo domain写法及运用
  • PermissionScope Swift4 兼容问题
  • vue总结
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 面试遇到的一些题
  • 前言-如何学习区块链
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 首页查询功能的一次实现过程
  • 思考 CSS 架构
  • 鱼骨图 - 如何绘制?
  • 终端用户监控:真实用户监控还是模拟监控?
  • No resource identifier found for attribute,RxJava之zip操作符
  • hi-nginx-1.3.4编译安装
  • RDS-Mysql 物理备份恢复到本地数据库上
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (04)odoo视图操作
  • (11)MSP430F5529 定时器B
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (转)memcache、redis缓存
  • (转)详解PHP处理密码的几种方式
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • *Django中的Ajax 纯js的书写样式1
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET使用存储过程实现对数据库的增删改查
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存