A python package that splits large files into smaller chunks.
Project description
Tutorial using the pysplit package
pysplit is a Python package used for splitting large files into smaller chunks.
Currently the default chunk size is 100MB. This size was chosen to work around GitHub's upload file size limit.
Install the latest version of pysplitter
Run the cell below to ensure you have the latest version of pysplitter
installed on your machine.
# !pip install --upgrade pysplitter
Import required packages
import pysplitter as pysp
import numpy as np
Import helpful packages
import sys
import os
Create a numpy array that will exceed 100MB when saved to disk.
The numeric values of the data are not important. Random values were used for convenience only.
dim = 250
num = int(dim * dim * dim)
x = np.random.normal(size=num).reshape(dim, dim, dim)
x.shape
(250, 250, 250)
Save numpy array to disk and list directory contents
np.save('x.npy', x)
os.listdir()
['.ipynb_checkpoints',
'1-split-unsplit-tutorial.ipynb',
'x.npy']
Display size of file on disk
size = os.path.getsize('x.npy')
print(f'{size / 1e6} MB')
125.000128 MB
As many people may know, GitHub will not allow files exceeding 100 MB to be uploaded.
Use the commands below to split the original (and too large) file into multiple .split
files.
Currently the default split size is <= 100 MB, but this may become a variable paramter in furture distributions.
os.listdir()
['.ipynb_checkpoints',
'1-split-unsplit-tutorial.ipynb',
'x(unsplit).npy',
'x.npy']
src = 'x.npy'
pysp.split(src)
2 file(s) written.
Check file size of the two chunks that were just written.
os.listdir()
['.ipynb_checkpoints',
'1-split-unsplit-tutorial.ipynb',
'x(unsplit).npy',
'x.npy',
'x0000.npy.split',
'x0001.npy.split']
print(os.path.getsize('x0000.npy.split') / 1e6, 'MB')
100.0 MB
print(os.path.getsize('x0001.npy.split') / 1e6, 'MB')
25.000128 MB
As is clearly shown from the output of the above cells, both chunks are <= 100MB. This means that this data can now pushed to GitHub as any other file would.
Recombine the data chunks back into a single file
search_pattern = './x*.split'
dst = '.'
pysp.unsplit(search_pattern, dst, validate=True, orig_src=src)
File reconstructed without loss: True
os.listdir()
['.ipynb_checkpoints',
'1-split-unsplit-tutorial.ipynb',
'x(unsplit).npy',
'x.npy',
'x0000.npy.split',
'x0001.npy.split']
x_unsplit = np.load('x(unsplit).npy')
x_unsplit.shape
(250, 250, 250)
Show that the manipulated data x_unsplit
is the same as the original data x
.
np.allclose(x, x_unsplit)
True
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pysplitter-0.0.17.tar.gz
.
File metadata
- Download URL: pysplitter-0.0.17.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d43d22994934b0273ef85417a656c18758276bcf7375cbb199ff6778dc7c9e4 |
|
MD5 | 8d4dafeb2706b0e660541e254df3c2ae |
|
BLAKE2b-256 | db34fb3274b7a994c60c3d0c5f0a4dda129bc5578646b3193ebd407a52646be9 |
File details
Details for the file pysplitter-0.0.17-py3-none-any.whl
.
File metadata
- Download URL: pysplitter-0.0.17-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 554d2b9c5d0193f36811d68609f64ead67a16210a77c1e5188055e0e2c971346 |
|
MD5 | 3c409503b8ba8636a4e2a61d707643eb |
|
BLAKE2b-256 | b9e20983ae1e262923304071e96172c5cbdf725d3bc08cdafc692725e2a2584d |