在python中分割文件 – 更快的方式

我需要能够将一个巨大的文件(10GB)分割成多个文件。唯一的标准是原始文件的头部,必须复制到所有较小的文件。

因此,用python写了一个程序来实现同样的功能。但是,这个程序很费劲,速度很慢。有没有一种方法,来加快程序的速度。

from pathlib import Path
import sys
import os
import string
import glob

directoryToLoadFrom = "c:\\directory\\"
directoryToWriteTo  = "C:\\outputDirectory\\"
# Set the last business day
filesToRead = directoryToLoadFrom + "output*.csv"
listNoOfOutputFiles= sorted(glob.glob(filesToRead), key=os.path.getmtime)
# For each file name

splitLen = 100000

for filename in listNoOfOutputFiles:
    print ('Currently working on ')
    print (filename)
    entirePath, filenameWithExtension= os.path.split(filename)
    filenameOnly = filenameWithExtension.split(".")[0] #Just get the filename
    extensionOnly =filenameWithExtension.split(".")[-1]  # Just get the extension


    with open(filename, 'r') as curFileContents:
        header_line = curFileContents.readline()
        filecnt = 1
        while 1:
            curlineCnt = 0
            targetFileName = directoryToWriteTo + filenameOnly + "-" + str(filecnt) + "." + extensionOnly
            print ('Writing to ')
            print (targetFileName)
            outputFile = open(targetFileName,"w")
            outputFile.write(header_line)
            for line in curFileContents:
                outputFile.write(line)
                curlineCnt +=1 
                if ( curlineCnt > splitLen):
                    break
            filecnt += 1
            if ( curlineCnt < splitLen):
                outputFile.close()
                break

解决方案:

你可以利用 multiprocessing 来快速完成这个任务。将逻辑划分成更小的块,然后在不同的进程中执行这些块。例如,你可以为你要创建的每个新文件制作一个进程。阅读更多关于多处理的内容 此处

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何从字符串"[ABC]"中删除[符号]?

2022-9-13 15:46:41

未分类

pandas matchcompare多列

2022-9-13 15:57:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索