python 文件指针切割文件

原理:

file.seek(offset, whence)

offset 偏移量,也就是相对于whence 的向前向后读取字节个数的值,可以负数,负数向前,整数向后,默认0

whence 有两种表示方法:纯数字,python内置函数

0,1,2 分别对应os.SEEK_SET,os.SEEK_CUR,os.SEEK_END

0表示指针移动到文件起始位置0

1表示指针移动到文件当前位置

2表示指针移动到文件末尾位置

案例:切割一个txt大小240字节的文件,每份50bytes,不够50取剩余全部,然后按顺序以二进制写入另一个文件保存

import os
import math


def cut_file(f):
    fp=open("./test.txt","rb")
    file_length=os.path.getsize("./test.txt")
    cut_interval=50
    nums=math.ceil(float(file_length)/cut_interval)
    for i in range(nums):
        if i < nums-1 :
            byte_type=0  # complete cut_interval byte
            fp.seek(i * cut_interval, 0)
            byte= fp.read(cut_interval)

            print( f"[{byte_type}] byte get size : {len(byte)},pointer is {fp.tell()},\n{byte}")
        else:
            byte_type=1 # uncomleted cut_interval byte
            remain= file_length%cut_interval
            int_cut=file_length//cut_interval
            fp.seek(int_cut*cut_interval,0)
            byte=fp.read(remain)
            print( f"[{byte_type}] byte get size : {len(byte)},pointer is {fp.tell()},\n{byte}")
        f.write(byte)


if __name__ == '__main__':
    with open("./dest.txt","wb")as f:
        cut_file(f)

  

 

posted @ 2020-05-22 15:17  不带R的墨菲特  阅读(406)  评论(0编辑  收藏  举报