Python实现简单文本分割工具

简介:

Python处理单个大文本文件时可能耗时较长而且多线程对单个文件的操作也要处理死锁等,对文件进行分割然后对分割后的文件进行多进程+多线程分别处理是一个不错的思路。

文 章分割可以按体积分割,也可以按行进行分割,一般情况下按行分割能保证数据的完整性,所以本脚本以按行分割实现,运行时,被分割文件和脚本位于同一目录, 运行后先输入被分割的文件全名,然后输入分割的数量,再输入输出的文件前缀就可以了!因为时间仓促,还有几个小bug没有修改!

源代码:基于Python2.7,尽量不使用各种库

      支持格式:txt  sql  json  csv  xml  log等常见的有明显结构的文本文件



#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

def get_file():#获取被分割的文件名,并验证是否合法
    while(True):
	f_name=raw_input('[ * ] Please input the filename to div: ')
	if isinstance(f_name,str):
	    if f_name.find('.txt')>0 or f_name.find('.sql')>0 or f_name.find('.json')>0 or f_name.find('.csv')>0 or f_name.find('.xml')>0 or f_name.find('.log')>0:				
		return f_name
	    else:
	        print '[ * ]The format Error!!!'
	        pass
	else: 
	    print '[ * ]The format Error!!!'
	    pass

def get_int():#获取要分割成几份文件
    while(True):
	file_num=raw_input('[ * ] Please input numbers: ')
	file_num=int(file_num)
	if isinstance(file_num,int):
	    return file_num
        else: 
	    print '[ * ]The number Error!'
	    continue

def get_allines(file_name):#统计文本文件所有的行数
    i=0
    with open(file_name) as f:
	for j in f:
	  i=i+1
    return i
	
if __name__=='__main__':
	print
	print '------------------------------------------------'
	print '[ * ] Filetype:txt sql csv xml json log'
	print '------------------------------------------------'
	print
	file_to_div=get_file()
	dot=file_to_div.find('.')
	houzui=file_to_div[dot:]
	outfile_name=raw_input('[ * ] Please input file-prifix:  ')#获取输出文件的文件名前缀
	num=get_int()
	lines_num=get_allines(file_to_div)
	print str(num)+' files ---',str(lines_num)+' lines per file'#打印
	mid=lines_num/num#获取分割后每份文件应该多少行,因为整数除法所以输出的文件数目可能多一个,下行处理
	mid=mid+1#为每个文件多加一行,防止输出的文件的数量多一个
	
	i=0
	with open(file_to_div) as file_hander:
	    for line in file_hander:
		i=i+1
		filename=outfile_name+str(i/mid+1)+houzui
		with open(filename,'a') as wfile:
		wfile.write(line)
	print
	print 'finished!!!'

使用示例:

step 1:输入被分割的文件名,如"mem.sql"

step 2:输入分割后的文件名的前缀,如"out"

step 3:输入分割的文件数目,如 4

Clipboard Image.png

补充:如果想利用本脚本处理其他格式的文本文件,可以在获取被分割的文件名函数里修改即可。

第一次发文章,路过的大神勿喷,Python学习交流使用,方便大家以后处理文本


相关文章
|
3月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
4月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
230 92
|
3月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
292 3
|
4月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
881 1
|
3月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
747 0
|
4月前
|
API 数据安全/隐私保护 Python
拼多多批量上架软件, 电商一键上货发布工具,python电商框架分享
多线程批量上传架构,支持并发处理商品数据 完整的拼多多API签名和token管理机制
|
4月前
|
安全 API 数据安全/隐私保护
|
4月前
|
Java API 数据安全/隐私保护
淘宝一键上货发布软件,淘宝批量发布上架工具, 淘宝批量上架脚本【python】
这个Python脚本实现了以下功能: 完整的淘宝API调用封装
|
4月前
|
机器人 数据安全/隐私保护 Python
淘宝批量发货发布工具, 淘宝批量上传商品软件, 淘宝批量上架软件【python】
使用Selenium实现自动化操作淘宝卖家后台 支持三种核心功能

推荐镜像

更多