cmd/lines_to_files.py

35 lines
1.1 KiB
Python

import argparse
import sys
from voussoirkit import gentools
from voussoirkit import pathclass
def linestofiles(file, lines_per_file):
file = pathclass.Path(file)
basename = file.replace_extension('').basename
basename = basename + '_{index}'
folder = file.parent
handle = file.open('r', encoding='utf-8')
chunks = gentools.chunk_generator(handle, lines_per_file)
for (index, chunk) in enumerate(chunks):
chunk = ''.join(chunk)
chunk_file = folder.with_child(basename.format(index=index)).add_extension(file.extension)
print(chunk_file)
chunk_file.open('w', encoding='utf-8').write(chunk)
handle.close()
def linestofiles_argparse(args):
return linestofiles(args.file, args.lines_per_file)
def main(argv):
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('file')
parser.add_argument('lines_per_file', type=int)
parser.set_defaults(func=linestofiles_argparse)
args = parser.parse_args(argv)
return args.func(args)
if __name__ == '__main__':
raise SystemExit(main(sys.argv[1:]))