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学习交流使用,方便大家以后处理文本


相关文章
|
10天前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
65 7
|
26天前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
108 4
|
28天前
|
开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第41天】 在编程的世界中,效率与简洁是永恒的追求。本文将深入探讨Python编程语言中一个独特且强大的特性——列表推导式(List Comprehension)。我们将通过实际代码示例,展示如何利用这一工具简化代码、提升性能,并解决常见编程问题。无论你是初学者还是资深开发者,掌握列表推导式都将使你的Python之旅更加顺畅。
|
1月前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
180 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
42 2
|
2月前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
2月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
54 2
|
1月前
|
C语言 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第24天】在Python编程的世界中,追求代码的简洁性和可读性是永恒的主题。列表推导式(List Comprehensions)作为Python语言的一个特色功能,提供了一种优雅且高效的方法来创建和处理列表。本文将深入探讨列表推导式的使用场景、语法结构以及如何通过它简化日常编程任务。
|
2月前
|
Python
python知识点100篇系列(14)-分割大文件然后在合并
【10月更文挑战第2天】在工作中,因邮件附件大小限制或网络条件不佳,常需将大文件分割为小文件发送,接收后再合并。Python的文件读写功能可轻松实现此需求,也可借助第三方库filesplit简化操作。安装filesplit后,仅需几行代码即可完成文件的分割与合并,但掌握Python内置方法同样重要。
|
2月前
|
机器学习/深度学习 Unix 开发者
python的环境管理工具有哪些
python的环境管理工具有哪些
29 0