Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125

Ошибка в записи большого объема строк в txt

02.04.2015, 17:41. Показов 1580. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет камрады!

Работаю с большими файликами, csvшки более гига размером. Нужно было выдрать оттуда нужный столбец и выписать в файл.

Но, почему-то после 1 555 554 строк, программа вываливается с
IndexError: list index out of range
Как нибудь это можно победить, или это внутреннее ограничение? Код скрипта вот:

Python
1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
import collections
import csv
 
frequency = 5 
f1 = open("out3333", 'w')
a=[]
with open('report (3).csv', 'rb') as f:
    reader = csv.reader(f, delimiter=';')
    for row in reader:
        f1.write(row[5]+"\n")
f1.close()

Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2015, 17:41
Ответы с готовыми решениями:

Вывод большого объема с записью в .txt файл
Добрый вечер! Требуется срочная помощь с записью в файл вывода кода. Вывод составляет 18 квинтиллионов строк (требуется сжатие), которые...

Импорт большого объема информации из txt файла
Добрый день, уважаемые форумчане! В общем дело обстоит так. Имеется txt фаил с более чем 24000 тысячами значений. Матлаб не хочет...

зависания при записи большого объема информации на хард
Жёсткий диск WDC WD15EARS-00MVWB0 ATA Device Windows 7 x64 зависает при установке/переписывании/извлечении чего-либо большого,...

15
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.04.2015, 18:00
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
программа вываливается
Откуда исключение-то сыпется?
Если в 11 строке при попытке обращения к пятому элементу row, то нужно на этот row и смотреть: есть ли в нем такой элемент.
0
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
02.04.2015, 18:03  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Откуда исключение-то сыпется?
Если в 11 строке при попытке обращения к пятому элементу row, то нужно на этот row и смотреть: есть ли в нем такой элемент.
f1.write(row[5]+"\n")
пишет что отсюда... Файл меньшего размера он жрёт спокойно. Подозреваю, что ему очень тяжело жрать большой файл.
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.04.2015, 18:06
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Подозреваю, что ему очень тяжело жрать большой файл.
Нужно посмотреть на конкретную строку в файле, которая вызывает проблему.
0
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
02.04.2015, 18:07  [ТС]
Цитата Сообщение от 0x10 Посмотреть сообщение
Нужно посмотреть на конкретную строку в файле, которая вызывает проблему.
открыть бы его ещё... Да и строку он не пишет...

Ну, всё равно спасибо.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.04.2015, 18:07
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Файл меньшего размера он жрёт спокойно.
Вот тут размер вообще не причем. Тебе просто попадается строка в которой меньше чем 6 символов.
Как тебе уже сказал 0x10, нужно проверять длину строки прежде чем пытаться извлечь какой-то её символ.
0
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
02.04.2015, 18:10  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
Вот тут размер вообще не причем. Тебе просто попадается строка в которой меньше чем 6 символов.
Как тебе уже сказал 0x10, нужно проверять длину строки прежде чем пытаться извлечь какой-то её символ.
Файлы однотипны все, там есть и пустые строки. Если залить файлик в 200 метров с такими же строками - от жрёт... Может, есть возможность эту строку пропустить, например?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.04.2015, 18:12
Python
1
2
3
4
try:
    f1.write(row[5]+"\n")
except IndexError:
    continue
1
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.04.2015, 18:15
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Может, есть возможность эту строку пропустить, например?
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Да и строку он не пишет...
Тыжпрограммист.
Python
1
2
3
4
5
6
7
8
9
import csv
 
with open('report.csv', 'r') as f:
    reader = csv.reader(f, delimiter=';')
    for line_number, row in enumerate(reader):
        try:
            row[5] + "\n"
        except IndexError:
            print("Error in line {}: {}".format(line_number, row))
0
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
02.04.2015, 18:17  [ТС]
Всё, благодарствую. Поехало, просто не знал о такой штуке.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.04.2015, 20:14
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
просто не знал о такой штуке.
Плохо, это база.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
03.04.2015, 07:10
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Работаю с большими файликами, csvшки более гига размером.
Какой ужас.
CSV не предназначены для таких объёмов, используйте настоящую СУБД. Использование не подходящих инструментов чревато проблемами в самых разных и неожиданных местах.
С одной проблемой вы уже столкнулись - посмотреть строку в файле.
0
 Аватар для VaLenOK007
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
03.04.2015, 07:27  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
CSV не предназначены для таких объёмов, используйте настоящую СУБД. Использование не подходящих инструментов чревато проблемами в самых разных и неожиданных местах.
Ну, это выгрузка из оной базы. Поскольку разработчики у нас очень вредные, доступ туда не дают, приходится пользоваться чем есть. Плюс, практика в работе с большими данными)
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
03.04.2015, 08:33
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
Плюс, практика в работе с большими данными)
CSV-шка в несколько гигов — это не тот порядок объема данных, который требует каких-то специфических техник. Один такой чанк данных влезает на флешку, парсится чем угодно.

Не по теме:

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

0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
03.04.2015, 14:00
Зависит от ситуации. Если человек сам генерит такое - это повод по возможности, дать по рукам. Если ему генерят - остаётся обзываться втихаря и мучиться.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
03.04.2015, 14:08
Цитата Сообщение от dondublon Посмотреть сообщение
С одной проблемой вы уже столкнулись - посмотреть строку в файле.
На мой взгляд это не проблема файлов, а просто не умение с ними работать. Когда извлекаешь данные по индексу, нужно всего быть готовым к нестандартной ситуации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2015, 14:08
Помогаю со студенческими работами здесь

Разделение большого xml файла на несколько файлов меньшего объема (строк)
Задача состоит в том что есть 1 большой xml файл (содержащий 150000 строк) нужно разделить на файлы меньшего объёма (например по 1000...

Ошибка при попытке обращения и записи строк и столбцов DataGrid в txt
Код: string submittedFilePath = "D:/КБИП/КПиЯП_ПРАКТИКА/1. CollegeTest_DEM/Приложение для студентов кбип/DB_RESOURCE"; ...

Ошибка после копирования большого объема данных
Здравствуйте, при копировании данных (100 гб) ноутбук был выключен кнопкой и теперь при запуске выходит синий экран как на фото. Подскажите...

Ошибка при выборке большого объема данных по select
делаю обычный запрос select * from table1 вылетает ошибка Сообщение 0, уровень 11, состояние 0, строка 0 При выполнении...

Передача большого объема данных (большого количества фотографий)
Есть веб-сервис ASP.NET, который работает по http протоколу. Однако есть необходимость передавать фотографии. передаю их в составе...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru