20190127-将一个文件拆分为多个新文件

1.一个文件拆分成5个文件

思路:

1. 首先拆分成多个新文件,新的文件名需要定义,使用file_name_no来定义新文件的名字

2. 新文件的内容要使用file_content来存储,当写入新文件后使用file_contect=‘‘清空新文件内容

3. 什么时候写新文件:考虑根据原始文件的内容做拆解,如将某文件拆分为5个文件,则原文件的行数除以5达到将原原件中的内容尽量平均的写入5个新文件中基于该情况,需要一个变量来统计原文件的行数,使用file_length存储原来文件的行数。然后再重新开始一行一行的读,当读取的行数达到1/5,2/5,3/5,4/5...的时候写文件

def split_file(file_dir,file_name,num):
    import os
    import os.path
    file_name_no=1
    file_content=‘‘
    #print(type(os.path.splitext(file_name)))
    with open(file_dir+file_name,‘r‘,encoding=‘utf-8‘) as fp1:
        file_length=len(fp1.readlines())
        #fp1.readlines()后,游标移到文件末尾,因此使用fp1.seek(0,0)将游标移到文件开始的位置
        print(file_length)
        fp1.seek(0,0)
        #使用fp1.seek(0,0)将游标移到文件开始的位置
        file_line=0
        #使用file_line记录已经读取的行数
        for line in fp1:
            file_content+=line
            file_line+=1
            if file_line==int(file_length/num)*file_name_no and file_name_no<num:
                #当读取的行数为达到文件内容的1/num,2/num...的时候,将文件内容写入新文件中,此写法如果文件行数/拆分个数为整数的时候刚好,否自会导致最后一个文件少内容
                with open(file_dir+‘new‘+os.path.splitext(file_name)[0]+str(file_name_no)+‘.txt‘,‘w‘,encoding=‘utf-8‘) as fp2:
                    file_name_no+=1
                    fp2.write(file_content)
                    file_content=‘‘
        if file_content:
            #解决因文件行数不一定拆分文件的整数倍导致最后一个文件可能少内容的情况
            with open(file_dir+‘new‘+os.path.splitext(file_name)[0]+str(num)+‘.txt‘,‘a‘,encoding=‘utf-8‘) as fp2:
                fp2.write(file_content)
split_file(‘D:\\Python\\‘,‘b.txt‘,3)

Tips:file_dir为文件的路径,file_name为文件的名称,使用os.path.splitext(file_name)[0]获取原来文件名,使用file_dir+‘new‘+os.path.splitext(file_name)[0]+str(file_name_no)+‘.txt‘拼接写文件名。当一个文件写入后,file_name_no加1,file_content清空,最后

原文地址:https://www.cnblogs.com/hyj691001/p/10327969.html

时间: 2024-08-05 02:52:56

20190127-将一个文件拆分为多个新文件的相关文章

大文件拆分问题的java实践(附源码)

引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借鉴. 本文将尝试由浅入深的方式表述大文件拆分的问题及不同解决方案,给出的方案不一定是最优解,也并非线上环境论证过的靠谱方式,目的只是在于通过该问题融会贯通io.多线程等基础知识理论.生产环境请慎用. 本文不会逐行讲解代码实现,而注重在方案设计及思路探讨上,但会在文末附上源码demo git地址. 问

C#将一个excel工作表根据指定范围拆分为多个excel文件

C#将一个excel工作表根据指定范围拆分为多个excel文件 微软Excel没有提供直接的方法来拆分excel文件,因此要拆分一个excel文件最简单的方法可能就是手动剪切和粘贴了,除此之外,还有其他方法如VBA及Visual Studio语言(如C#.VB.NET等)编程的方式.VBA我不是很熟悉,因此这篇文章写的是如何使用C# 将一个excel工作表根据指定的范围拆分为多个excel文件. 下面是一个excel人力资源信息表,里面含有三个部门及一些员工信息: 接下来就开始拆分这个excel

如何将一个文件夹复制到另一个文件夹中并保留其权限

概要 本文分步介绍了如何将一个文件夹复制到另一个文件夹中并保留其权限.   当您使用 Windows Explorer 复制或移动文件和文件夹时,在这些文件或文件夹上设置的权限可能会发生改变.例如,当您在一个 NTFS 文件系统卷内或在两个 NTFS 卷之间复制一个文件时,Windows 2000 将把它当作一个新文件.作为一个新文件,它将具有目标文件夹的权限,您将成为"创建者所有者".    注意:您必须对目标文件夹具有"写"权限才能复制文件和文件夹.    可以

excel多个sheet表拆分成独立的excel文件

一.问题: 公司做一个项目,给的用户上报文是一个包含多个sheet页的excel文件, 但是在实际处理报文数据的时候需要拆分excel文件为多个独立的报文excel文件 二.解决: (1)一个一个的复制,新建文件,生成新的sheet文件,sheet多的时候很麻烦 (2)使用office的宏工具来自动化拆分文件 三.操作步骤: 注意:本操作以wps为例,其它的请自行测试 (1)下载[wps vba宏插件] (2)点击 [开发工具]-->[vba编辑器]-->[插入]-->[模块] (3)复

sql大文件拆分导入

一.文件压缩与解压 sql文件比较大,通常会压缩至大概十分之一大小. 1.压缩文件 非打包 tar -czvf test.tar.gz test.sql //压缩 test.sql文件为test.tar.gz(会保留原文件) tar -czvf test.tar.gz test/ //压缩目录下的文件 (不过目录的压缩效果就一般了) 2.列出压缩文件内容 tar -tzvf test.tar.gz rw-r--r-- root/root 0 2010-05-24 16:51:59 test.sq

Linux基础概念-----touch一个新文件背后发生的事情

一个普通用户在Shell下执行了一条命令,这背后发生了什么事情,是个人的一些总结,如果有不对的地方欢迎搭建指正,谢谢! touch /tmp/test.txt ####################################################################################### tom在Shell中执行这条命令,Shell将命令发给内核,并且判断命令是否存在,通过文件系统上的元数据判断tom是否有权限执行,内核从内存中加载出mkdir的指令

Qt写的文件拆分和融合小工具

最近因事物需要,需要将大文件分解为几个小文件,然后就行传输,在接收端需要对接收到的小文件进行融合.因此用Qt写了这个小工具.现在奉献上这个小工具的代码和思路. 我们知道任何文件在计算机上都是二进制数据块,因此只需要使用读写二进制的形式来读取大文件,在将读取的大文件以二进制形式写入小文件,这样就可以将文件拆分了(当然这是非常简单的拆分方法,对有些文件肯定存在错误的,因为本人在这方面的知识很肤浅).同样小文件的融合就是拆分的逆过程. 在读写文件的过程中我使用的是C++标准库ifstream和ofst

关于IIS服务器下载新文件类型提示找不到文件的问题

在IIS6中新增可下载文件类型 IIS 6.0 不能处理未知的 MIME 类型 IIS6 只为对具有已知文件扩展名的文件的请求提供服务.如果请求内容的文件扩展名未映射到已知的扩展,则服务器拒绝请求.即IIS不支持未知文件扩展下载! 当您从 IIS 6.0 Web 服务器中请求文件时,而该文件的扩展名不是 Web 服务器上已定义的 MIME 类型,您将看到以下错误消息: HTTP 错误 404 - 找不到文件或目录. 原因 IIS 早期版本包含通配符 MIME 映射,允许 IIS 处理任何文件而无

Linux下按照时间和大小生成新文件的程序流程及其C代码实现

一.概述 在实际的软件开发项目中,会出现按照时间和大小生成新文件的需求.例如,某软件需求的描述如下: 按照如下两个条件之一生成新的文件: 第一,新的一天到来. 第二,文件的大小超过阈值. 本文详细介绍了根据时间和大小生成新文件的程序流程,并给出了C程序实现. 二.算法设计 对于这个按照不同的条件生成新文件的需求,在编写代码之前,我们要认真考虑以下问题: 1.如何知道当前写文件的时间与上次时间相比,是新的一天? 对于这个问题,最简单的做法是将上次写完文件之后的时间保存在内存中,等下次写文件之前读取