Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # Пропустить первые HEADER строк в файле и вывести следующие BODY строк.
- # Повторять до готовности. Каждое BODY сохраняется в новый файл.
- from sys import argv, stderr, exit
- HEADER_LINES = 7
- BODY_LINES = 2500
- PROGRESS_STEP = 20 # print progress each N chunks
- #HEADER_LINES = 1
- #BODY_LINES = 3
- OUTFILE_NAME = '%s-{number}.txt' % argv[1]
- if len(argv) < 2:
- print('Usage: %s filename.\n'
- ' The script will split file "filename" into files %s,\n'
- ' skipping %s lines of header for each experiment\n'
- ' and writing %s lines of text.' % (argv[0], OUTFILE_NAME, HEADER_LINES, BODY_LINES))
- exit(0)
- def word(count, base):
- return '%s %s%s' % (count, base, ['', 's'][count != 1])
- exp_no = 0
- with open(argv[1]) as inp:
- while True:
- i = -1
- for i, _ in enumerate(inp):
- if i >= HEADER_LINES - 1:
- break
- if i < HEADER_LINES - 1:
- break # end of file reached
- exp_no += 1
- with open(OUTFILE_NAME.format(number=exp_no), 'w') as out:
- i = -1
- for i, line in enumerate(inp):
- out.write(line)
- if i >= BODY_LINES - 1:
- break
- if i < BODY_LINES - 1:
- print('The last experiment is too short (%s only)' % word(i + 1, 'line'))
- break # end of file reached
- if exp_no % PROGRESS_STEP == 0:
- print('%s processed' % word(exp_no, 'experiment'), file=stderr)
- print('\n%s processed' % word(exp_no, 'experiment'), file=stderr)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement