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


相关文章
|
1天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
【4月更文挑战第25天】R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
|
7天前
|
机器学习/深度学习 自然语言处理 API
《Python 语音转换简易速速上手小册》第4章 语音到文本的转换(2024 最新版)(上)
《Python 语音转换简易速速上手小册》第4章 语音到文本的转换(2024 最新版)
22 0
|
7天前
|
机器学习/深度学习 数据采集 自然语言处理
《Python 语音转换简易速速上手小册》第3章 文本到语音的转换(2024 最新版)(上)
《Python 语音转换简易速速上手小册》第3章 文本到语音的转换(2024 最新版)
23 0
|
7天前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
12 1
|
8天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title('简单折线图') plt.xlabel('X轴') plt.ylabel('Y轴') plt.show() ```
13 1
|
8天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
15 1
|
9天前
|
机器学习/深度学习 自然语言处理 算法框架/工具
用于NLP的Python:使用Keras进行深度学习文本生成
用于NLP的Python:使用Keras进行深度学习文本生成
20 2
|
14天前
|
测试技术 开发者 Python
Python中的装饰器:优雅而强大的函数修饰工具
在Python编程中,装饰器是一种强大的工具,用于修改函数或方法的行为。本文将深入探讨Python中装饰器的概念、用法和实际应用,以及如何利用装饰器实现代码的优雅和高效。
|
18天前
|
存储 JSON 数据挖掘
python逐行读取txt文本中的json数据,并进行处理
Python代码示例演示了如何读取txt文件中的JSON数据并处理。首先,逐行打开文件,然后使用`json.loads()`解析每一行。接着,处理JSON数据,如打印特定字段`name`。异常处理包括捕获`JSONDecodeError`和`KeyError`,确保数据有效性和字段完整性。将`data.txt`替换为实际文件路径运行示例。
14 2
|
1月前
|
数据采集 搜索推荐 数据挖掘
使用Python制作一个批量查询搜索排名的SEO免费工具
最近工作中需要用上 Google SEO(搜索引擎优化),有了解过的朋友们应该都知道SEO必不可少的工作之一就是查询关键词的搜索排名。关键词少的时候可以一个一个去查没什么问题,但是到了后期,一个网站都有几百上千的关键词,你再去一个一个查,至少要花费数小时的时间。 虽然市面上有很多SEO免费或者收费工具,但免费的基本都不能批量查,网上免费的最多也就只能10个10个查询,而且查询速度很慢。收费的工具如Ahrefs、SEMrush等以月为单位收费最低也都要上百美刀/月,当然如果觉得价格合适也可以进行购买,毕竟这些工具的很多功能都很实用。今天我给大家分享的这个排名搜索工具基于python实现,当然肯定
40 0