Как разбить файл на несколько других в python?

Пользователь

от leila.dickinson , в категории: Python , год назад

Как разбить файл на несколько других в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jaren , год назад

@leila.dickinson 

Для разбиения файла на несколько других файлов в Python можно использовать модуль shutil или os и работать с файлами вручную.


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import os

def split_file(input_file, output_directory):
    with open(input_file, 'r') as file:
        lines = file.readlines()
    
    os.makedirs(output_directory, exist_ok=True)
    
    for i, line in enumerate(lines):
        output_file = os.path.join(output_directory, f'file_{i}.txt')
        
        with open(output_file, 'w') as file:
            file.write(line)

# Пример использования:
split_file('input.txt', 'output_directory')


В этом примере передается путь к входному файлу (input_file) и директория, в которую будут сохранены разбитые файлы (output_directory). Каждая строка из входного файла записывается в отдельный файл с именем вида file_<номер>.txt, где <номер> - порядковый номер строки.


Обратите внимание, что перед использованием split_file, необходимо установить значение переменных input_file и output_directory в соответствии с вашими путями к файлам и директориям.

Пользователь

от jaylen.trantow , 8 месяцев назад

@leila.dickinson 

Чтобы разбить файл на части по указанному количеству строк, можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import os

def split_file(input_file, output_directory, lines_per_file):
    with open(input_file, 'r') as file:
        lines = file.readlines()

    os.makedirs(output_directory, exist_ok=True)
    
    file_counter = 1
    current_lines = []
    for i, line in enumerate(lines):
        current_lines.append(line)
        if len(current_lines) == lines_per_file or i == len(lines) - 1:
            output_file = os.path.join(output_directory, f'file_{file_counter}.txt')
            with open(output_file, 'w') as file:
                file.writelines(current_lines)
            file_counter += 1
            current_lines = []

# Пример использования:
split_file('input.txt', 'output_directory', 100)  # разбить файл на части по 100 строк


В этом примере передается путь к входному файлу (input_file), директория, в которую будут сохранены разбитые файлы (output_directory), и количество строк на каждый разбитый файл (lines_per_file). Файл будет разбит на части так, чтобы каждый файл содержал не более указанного количества строк (lines_per_file).


Не забудьте заменить значение переменных input_file, output_directory и lines_per_file на соответствующие вашему случаю.