利用线程对文件进行分割

Posted yongqi-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用线程对文件进行分割相关的知识,希望对你有一定的参考价值。

情景:

将一个文件进行分割以字节进行平均分割成2份存入两个文件:

import os
import multiprocessing



#读取文件的大小
number=os.path.getsize(dict.txt)
print(number)

#读前半部分
def file_up(number):
    n = number // 2
    #文件拷贝模板
    with open(dict.txt) as up:
        with open(dict_up,w) as wup:
            #分割文件进行读取写入(当文件过大时不可能将其全部读取出来必须分割)
            while n>=1024:
                wup.write(up.read(1024))
                n-=1024
            else:
                wup.write(up.read(n))
    return

#读前半部分
def file_down(number):
    n = number // 2
    #文件拷贝
    with open(dict.txt) as down:
        #分割文件进行读取写入(当文件过大时不可能将其全部读取出来必须分割)
        down.seek(number//2)
        with open(dict_down,w) as wdown:
            while n>=1024:
                wdown.write(down.read(1024))
                n-=1024
            else:
                wdown.write(down.read(n))
    return

#在wds和mac系统下必须用main包裹进程否则报错(这与系统差异有关)
if __name__ == __main__:
    #创建线程对象
    up=multiprocessing.Process(target=file_up,args=(number,))
    down=multiprocessing.Process(target=file_down,args=(number,))
    #启动线程
    up.start()
    down.start()
    #结束线程(也叫堵塞线程)
    up.join()
    down.join()

 

以上是关于利用线程对文件进行分割的主要内容,如果未能解决你的问题,请参考以下文章

Android 多线程下载,断点续传,线程池

daily文件分割限速下载,及合并分割文件

如何从 RCNN 中裁剪分割的对象?

利用FFMPEG命令进行文件分割

如何利用redis来进行分布式集群系统的限流设计

如何利用 Azure 为 TEASOFT视频配音?