https://github.com/pyvesb/file-partitioner
:scissors: Simple C++ program to perform line-based partitioning of files.
https://github.com/pyvesb/file-partitioner
c-plus-plus file-parser partitioning
Last synced: 12 months ago
JSON representation
:scissors: Simple C++ program to perform line-based partitioning of files.
- Host: GitHub
- URL: https://github.com/pyvesb/file-partitioner
- Owner: PyvesB
- License: gpl-3.0
- Created: 2016-06-04T21:34:06.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-04-14T18:45:28.000Z (almost 9 years ago)
- Last Synced: 2025-01-26T00:17:42.106Z (about 1 year ago)
- Topics: c-plus-plus, file-parser, partitioning
- Language: C++
- Homepage:
- Size: 15.6 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# FilePartitioner
A simple C++ program to perform line-based partitioning of files. Nothing fancy, but does the job just fine and supports several options detailed below! The header file *FilePartitioner.hpp* contains all the partitioning functions, the source file *main.cpp* is just a small wrapper to parse command line input. The program was tested on Linux with GCC 5.4 and Windows with MinGW 5.3.
You can compile the program with a command similar to the following:
```
g++ -std=c++11 -O3 -o FilePartitioner src/main.cpp src/FilePartitioner.hpp
```
### Program parameters
Once compiled, the input of the program must have the following form:
```
file-location destination-folder partitioning-mode number-of-partitions
```
* *file-location*: location of the file to partition. Any line-based text file will work (.txt files, .csv files, etc.).
* *destination-folder*: must point to an existing folder in your file system; the output files will have the same name as the input one, with an additional suffix corresponding to the partition number.
* *partitioning-mode*
* *rr* for round-robin partitioning, each partition receives a line from the input file in turn.
* *ln* for linear partitioning, each partition receives one chunk of the input file.
* *rd* for random partitioning, each partition receives randomly selected lines from the input file (will most likely not give equally sized partitions).
* *number-of-partitions*: number of partitions to create from the input file.
For instance, on Linux:
```
./FilePartitioner data/myFile.csv data/ rr 8
```
Have fun partitioning your files!