File size: 1,075 Bytes
9eb8b77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import sys


def split(fn, max_size):
    f = open(fn, 'rb')
    block_size = 1024
    max_n = int(max_size/block_size)
    i = 0
    while True:
        block = f.read(block_size)
        if not block:
            try:
                w.close()
                print(f"[Done] Completed.")
            except:
                pass
            break
        i += 1
        if i % max_n == 1:
            w = open(f"{fn}.part.{(i//max_n)+1}", 'wb')
            print(f"[Start] Creating {fn}.part.{(i//max_n)+1} ...")
        w.write(block)
        
        if i % max_n == 0:
            w.close()
            print(f"[Done] Closing {fn}.part.{(i//max_n)} ...")


def merge(fn):
    import glob
    fns = sorted(glob.glob(f"{fn}*"))
    w = open(f"{fn}.copy", 'wb')
    for fn in fns:
        f = open(fn, 'rb')
        w.write(f.read())
        f.close()
    w.close()


if __name__ == '__main__':
    cmd = sys.argv[1]
    fn = sys.argv[2]

    if cmd == 'split':
        max_size = int(sys.argv[3])
        split(fn, max_size)
    elif cmd == 'merge':
        merge(fn)