Python разделение файла на несколько файлов при особом возникновении - PullRequest
0 голосов
/ 14 июля 2020

Всем доброго времени суток!

У меня огромный файл:

1| something
2| something else
2| something else 2
2| something else 3
3| something else 4
3| something else 5
5| something else 6
...
28| something else 29

Мне нужно разделить этот файл на 28 разных файлов. Как file1, содержащий все, что начинается с 1|, file2 с 2|, и т. Д. c.

Размер файла составляет около 400 ГБ. Есть ли эффективный и простой способ сделать это?

Большое спасибо!

редактировать:

это то, что я сделал, и это занимает много времени

    for line in r_file:
        var.append(line)
    r_file.close()
    for i in range(1, 29):
        w_file = open('/file' + str(i) + '.txt', 'a', encoding='utf-8')
        for line in var:
            if line.startswith(str(i) + '|'):
                w_file.write(line)
        w_file.close()```

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете создать 29 файлов и скопировать строки в соответствующий файл, используя python.
Файлы создаются автоматически с использованием этого кода ниже.
См. Комментарии, чтобы узнать о функциональности.

Python

file = [None]

# Open files in write mode
for i in range(1, 30):
    file.append(open("file"+str(i)+".txt", "w"))

# Copy required lines to other files
with open('original_file.txt', 'r') as orig:
    for line in orig:
        fno = int(line.split('|')[0])
        if (1<=fno<=28): file[fno].write(line)
        else: file[29].write(line)
        print(fno)

# Close files
for i in range(1, 30):
    file[i].close()

Спасибо

...