将txt文档按行分割

昨天遇到了一个需求,需要将txt文档按行分割,并指定了行数,

最近在用python,就在网上搜了一下,在参考了http://blog.csdn.net/zhang_red/article/details/9055965这个帖子后,准备自己改一下

发现原帖代码似乎有点问题,改了下代码如下:

# -*- coding: utf-8 -*-
import os

class SplitFiles():
    """按行分割文件"""

    def __init__(self, file_name, line_count=200):
        """初始化要分割的源文件名和分割后的文件行数"""
        self.file_name = file_name
        self.line_count = line_count

    def split_file(self):
        if self.file_name and os.path.exists(self.file_name):
            try:
                with open(self.file_name) as f:  # 使用with读文件
                    temp_count = 0
                    temp_content = []
                    part_num = 1
                    for line in f:
                        if temp_count < self.line_count:
                            temp_count += 1
                        else:
                            self.write_file(part_num, temp_count, temp_content)
                            part_num += 1
                            temp_count = 1
                            temp_content = []
                        temp_content.append(line)
                    else:  # 正常结束循环后将剩余的内容写入新文件中
                        self.write_file(part_num, temp_count, temp_content)

            except IOError as err:
                print(err)
        else:
            print("%s is not a validate file" % self.file_name)

    def get_part_file_name(self, part_num, temp_count):
        """"获取分割后的文件名称:在源文件相同目录下建立临时文件夹temp_part_file,然后将分割后的文件放到该路径下"""
        temp_path = os.path.dirname(self.file_name)  # 获取文件的路径(不含文件名)
        temp_name = os.path.splitext(os.path.basename(self.file_name))[0]
        part_file_name = temp_path + os.sep + temp_name
        if not os.path.exists(part_file_name):  # 如果临时目录不存在则创建
            os.makedirs(part_file_name)
        part_file_name += os.sep + temp_name + "_part" + str(part_num) + "_"+ str(temp_count) + ".txt"
        return part_file_name

    def write_file(self, part_num, temp_count, *line_content):
        """将按行分割后的内容写入相应的分割文件中"""
        print temp_count
        part_file_name = self.get_part_file_name(part_num, temp_count)
        print(line_content)
        try:
            with open(part_file_name, "w") as part_file:
                part_file.writelines(line_content[0])
        except IOError as err:
            print(err)

if __name__ == "__main__":
    sf = SplitFiles(r"/Users/xxx/目标文档.txt", 100000)
    sf.split_file()

代码将txt文档每10W行,进行分割,达到了预期目标。

就在我打算写个博客记录时,发现了更好用的东东,命令行

linux或osx可用,

命令行

wc -l 目标文本.txt

用来统计文本共有多少行

split -l 100000 目标文本.txt 目标文本part

将目标文本切割  每100000一个文件  文件前缀名为目标文本part

时间: 2024-12-13 19:23:32

将txt文档按行分割的相关文章

用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过python读取.正则表达式处理并写入Excel文档将大大减少人工处理的工作量. 1. 从gerrit获取原始信息,存入文本文档: $ssh –p 29418 <your-account>@192.168.1.16 gerrit query status:merged since:<date

如何把Excel中的每一行都存储为一个TXT文档

当Excel中有多行数据时,恰巧我们也需要把每一行数据都存储成一个txt文档,那么我们要手工一个一个Ctrl+c-->Ctrl+v-->Ctrl+s吗?答案是肯定不行的哇,因为本人需要处理一个存储了6万多条数据的文档,为了珍爱生命,那么本人就利用office里的VBA来投机取巧了! 首先利用快捷键Alt+F11,打开Excel的VBA,输入如下代码: Private Sub CommandButton1_Click()     Application.ScreenUpdating = Fals

matlab txt文档读取

下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以. function dataout=dataread(filein,fileout,line) fidin=fopen(filein,'r'); fidout=fopen(fileout,'w'); nline=0;  while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 nline=nline+1; if nlin

VBS读取txt文档数据查找Excel中单元格数据符合条件的剪切到工作表2中

Dim fso,f,a set oExcel = CreateObject( "Excel.Application" ) oExcel.Visible = false '4) 打开已存在的工作簿: oExcel.WorkBooks.Open( "F:\1.xlsx" ) On Error Resume Next '判断是否存在Sheet2工作表,不存在新建 If oExcel.WorkSheets("Sheet2") Is Nothing The

Navicat导入TXT文档到Mysql, excel文档导入用同样操作

1.先做TXT文档的格式工作,另存为UTF-8的txt格式. 然后再文档最顶端,命名跟数据库一样的列名,方便后面识别 2.点击导入 3.选择txt导入向导 4.选择txt文件的位置 5.这里如果是用tab隔开的数据,如图,就不用动,全部默认 6.因为我们前面使用了跟数据库列名一样的名字,这里也不用动,自己可以识别,默认. 7.这里选择数据库的表名,一般识别的都是对的,不对,自己更改一下,想导入哪个数据表中. 8.起一样的列名的好处,就是自己识别,这里默认出来了,如果不对,自己修改. 9.选择模式

用PHP实现浏览器点击下载TXT文档的方法详解

[[注:其他文件想设置成下载文件,和下面介绍的方法一致]] 由于现在的浏览器已经可以识别txt文档格式,如果只给txt文档做一个文字链接的话,点击后只是打开一个新窗口显示txt文件的内容,并不能实现点击下载的目的.当然这个问题的解决办法也可以是将txt文件改名为浏览器不认识的文件(比如rar),这样的话,由于浏览器不能识别rar类型的文件,只能让用户下载了.还有一种办法,就是利用代码通过header设置文档的格式来实现点击下载的目的. PHP代码如下:======================

串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像

从串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像,在VC++中应该怎么做呢?看了一 些资料,有人说直接保存成jpg格式,于是我把文件名的后缀.txt改成了.jpg,但打开时显示“没有预览”.我在VC++中执行了以下程序: FILE *pFile=fopen("tst.txt","rb");//tst.txt为JPEG数据 char *pBuf; fseek(pFile,0,SEEK_END); int len=ftell

C# 将内容写入txt文档

<1>  FileStream fs = new FileStream(@"D:\text.txt", FileMode.Append); StreamWriter sw = new StreamWriter(fs, Encoding.Default); sw.Write(strAnalasy); sw.Close(); fs.Close(); <2>  FileStream TreatProcess = new FileStream(@"文件目录&q

网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中

下面是自己编写的 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中 (以防忘记) 原创哟 import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.Inp