Мне нужно разбить файлы на гарантированное количество сегментов. Размер не должен быть одинаковым.

Вот моя логика

count = wc -l filename
split_count = (count)/4
split -l split_count filename core_

Иногда, если я меняю цифру 4 на другую, это дает мне N+1 количество сегментов. Есть ли лучший способ создать ровно N сегментов?

1 ответ1

2

Вероятно, это связано с тем, что результат использования целочисленной арифметики иногда приводит к значению, слишком малому.

Например, 1001 / 4 - это 250 но четыре лота по 250 строк не дадут всех ваших 1001 строк.

Вы можете изменить свою логику, увеличивая это значение до тех пор, пока четыре из них не станут по крайней мере такими же большими, как файл, например:

count = wc -l filename
split_count = (count)/4
while split_count * 4 < count:           # Add these
    split_count++                        #   two lines.
split -l split_count filename core_

Вы также можете округлить до следующего кратного N чтобы убедиться, что этого достаточно, что-то вроде:

split_count = (count + N - 1) / N

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .