Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/55: Рейтинг темы: голосов - 55, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 6

Разделить текстовый файл пополам

02.06.2015, 09:37. Показов 11407. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как можно разделить файл txt в Питоне пополам (по размеру файла), и каждую половинку записать в отдельный текстовый файл?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2015, 09:37
Ответы с готовыми решениями:

Дан входной текстовый файл. Разделить его на четные и нечетные строки в два выходных файла
input.txt 111 222 333 44

Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово
Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово. Функцию писать не...

Разделить текстовый файл на несколько
В исходном текстовом файле находится информация о студенте: фамилия и группа. Программа сортирует студентов по группам и записывает в новый...

10
44 / 44 / 37
Регистрация: 11.12.2012
Сообщений: 200
Записей в блоге: 2
02.06.2015, 09:39
Закидывайте в массив. Массив / 2.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
02.06.2015, 11:07
Cписок долго. Прочитать половину можно даже с помощью readlines(…) указав в скобках величину половины длины файла, так что наверняка есть другие инструменты.
0
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 6
02.06.2015, 11:12  [ТС]
А не могли бы вы написать, как это лучше всего сделать?
Вот допустим у меня есть папка с 10 документами txt, и мне нужно каждый из них разделить на 2 (или 4) части, и каждую часть - в отдельных файл, тоже txt
0
44 / 44 / 37
Регистрация: 11.12.2012
Сообщений: 200
Записей в блоге: 2
03.06.2015, 10:38
Считываете в список ваш текстовый файл и потом обрабатываете. Вот вам упрощенная версия, без чтения и записи в файл, только срез на половину, думаю, не составит труда это записать в файл.

Python
1
2
3
4
a = 'Согласно последним исследованиям, медиапланирование естественно стабилизирует презентационный материал'.split(" ")
 
for x in list(range(0, int(len(a)/2))):
    print(a[x])
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.06.2015, 10:45
1ds, это на не больших файлах сработает, а большие засрут память.
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
03.06.2015, 10:55
Так знаю
Bash
1
for f in *.txt ; do split -n 2 -a 1 -d --additional-suffix=".txt" "$f" "${f%txt}" ; done
а вот на Python …
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.06.2015, 12:02
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import math
import itertools
 
 
def openfile(filename):
    with open(filename) as file_:
        for i in file_:
            yield i.strip()
 
 
def file_split(filename, parts):
    """
    Разбивает содержимое файла на несколько итераторов
    """
    all_str = sum(1 for i in open(filename, 'r'))  # кол-во строк в файле
    count = math.ceil(all_str / parts)  # размер среза
 
    offset = 0
    chunks = []  # Итераторы содержащие разные части файла
    for i in range(parts):
        file_ = openfile(filename)
        chunks.append((itertools.islice(file_, offset, offset + count)))
        offset += count
 
    return chunks
 
 
def write_chunks(filename, chunks):
    for index, data in enumerate(chunks):
        with open('{}-{}.txt'.format(filename, index), 'w') as out:
            list(map(lambda line: out.write('{}\n'.format(line)), data))
 
 
target = ['file1.txt', 'file2.txt']
for i in target:
    chunks = file_split(i, 2)
    write_chunks(i, chunks)
0
Эксперт NIX
 Аватар для Marinero
2796 / 2039 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
03.06.2015, 12:29
alex925, Думал что как-то проще… И, строка 15 — в условии по байтам, не по строкам.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.06.2015, 13:42
Цитата Сообщение от Marinero Посмотреть сообщение
Думал что как-то проще
Ну в лоб если делать, то будет пару строк, но это мягко говоря не есть хорошо.
0
 Аватар для Wolkodav
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
03.06.2015, 21:19
smthmixted,
Python
1
2
3
4
5
6
7
8
9
import os
 
def file_split(filename):
    size = os.path.getsize(filename)
    first = second = None
    with open(filename) as fd:
        first = fd.read(size / 2)
        second = fd.read(size / 2)
    return first, second
Ну наверное типо такого
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2015, 21:19
Помогаю со студенческими работами здесь

Разделить текстовый файл на несколько
Добрый день! Подскажите пожалуйста, как создать bat файл, чтобы он разбивал txt файл, после определенного слова, например такого типа...

Разделить Текстовый файл по строкам
Есть текстовый файл весом 8Гб, в котором 57милл.строк. Нужно разделить файл по 5-10милл. строк.

Разделить Текстовый файл по строкам
Есть текстовый файл весом 8Гб, в котором 57милл.строк. Нужно разделить файл по 5-10милл. строк.

Процедура. Разделить текстовый файл на несколько
Напишите, пожалуйста, процедуру, которая текстовый файл разделит на несколько. А именно: дан список студенов, разделенных по группам. Для...

Как разделить текстовый файл по определённому полю?
Доброго времени суток! Снова у меня проблема. Есть CSV-файл: "Work0.csv". Из него нужно сделать два файла, поделив по информации...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru