Напишите функцию с именем file_split(filename, number_of_files)
, которая будет разбивать входной файл на несколько выходных файлов. Файлы должны быть разделены как можно более равномерно. Когда длина файла равномерно делится на количество создаваемых файлов (10-строчный файл, разбитый на 2 файла, каждый выходной файл должен иметь 5 строк. Если длина не делится на части, длина всех выходных файлов не должна иметь разница больше 1. Например, файл из 10 строк, разделенных на 3, будет иметь выходные файлы длиной 3, 3 и 4.Python Разделить файлы на несколько файлов меньшего размера
Я написал свой код, но не могу понять, как сделать разницу больше чем 1 часть, мне нужна помощь в изменении моего кода, чтобы включить эту часть (код у меня создает новый файл для последней строки, если он не кратен)
def get_line_counts(filename, number_of_files):
try:
my_file = open(filename, 'r')
except IOError:
print("File does not exist")
return
input = my_file.read().split('\n')
outputBase = 'lel'
total_lines = 0
with open('myfile.txt') as infp:
for line in infp:
if line.strip():
total_lines +=1
base_size = total_lines // number_of_files
at = 1
for lines in range(0, len(input), base_size):
outputData = input[lines:lines+base_size]
output = open(outputBase + str(at) + '.txt', 'w')
output.write('\n'.join(outputData))
output.close()
at += 1
возможно дубликат [Как разбить файл на количество выходных файлов в Python 3?] (http://stackoverflow.com/questions/30572321/how-to-split-file-into-number-of-output-files-in-python-3) – zero323
* «Создать функцию ...» *? Мы ваши рабы, что вы можете дать нам команды? –
@Stefan Pochmann Вы прочитали следующий абзац? –