Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 1, 2012 23:04:36

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)

Вот 1 из примеров кода:

with open("queries.txt", "r") as f:
a = f.read().splitlines()
len(a)
# Выведет - 1090885

Ресурсы компьютера позволяют читать весь файл сразу в память, (которой у меня 16 ГБ), поэтому в чем дело я не знаю, мб это стандартное ограничение ?

* Кодировка файла из которого происходит чтение - utf-8

Спасибо за ответ



Отредактировано Mozart (Сен. 1, 2012 23:09:08)

Офлайн

#2 Сен. 1, 2012 23:09:57

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

А если в память сразу все(весь файл) считать?

bufferSize = 55555#Кол-во оперативы под буфер
print len(open('queries.txt', 'r', bufferSize).readlines())

with open("queries.txt", "r") as f:
	a = f.read().splitlines()
len(a)
В коде выше, т.к ты не указал явный размер буфера, считало столько сколько влезло за раз в буфер, размер которого автоматически определил python.



Отредактировано mironich (Сен. 1, 2012 23:10:33)

Офлайн

#3 Сен. 1, 2012 23:18:41

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Не помогло, вот скриншот для наглядности - http://gyazo.com/b4f9aad038f3d5cb29ee8d4996f5be0b

Самое смешное то, что есть еще 1 файл на 3 миллиона записей, но он почему то полностью читается и длина выводится верно, мб дело в самом файле, битый он что ли какой …



Офлайн

#4 Сен. 1, 2012 23:31:54

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Что такое “запись”? Строка?

И зачем читать его весь в память? По строчке нельзя?

Какой размер файла?

Офлайн

#5 Сен. 2, 2012 00:14:52

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Mozart
У тебя на скрине, указан размер буфера который я с потолка взял, а ты укажи равный размеру файла +- несколько кб.



Офлайн

#6 Сен. 2, 2012 08:26:18

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

odnochlen - да, под записью я имел ввиду количество строк в файле, размер файла 480 метров.

Построчно я так же пробовал, результат тот же - http://gyazo.com/c869096cb1d63a56bd79690ed9193014

mironich - ставил разные значения, до 1 млрд., не помогает это.

Вообще, сейчас специально сделал файл на 9,15 млн. строк, все нормально считается, как сразу в память, так и построчно, скрин - http://gyazo.com/3c4f2f7ef92fe2e7b5e7625e684d4049

Я думаю проблема с файлом все таки какая то, тем более я не могу у него даже кодировку сменить, просто отказывается её менять и все (Через Notepad и EmEditor)



Отредактировано Mozart (Сен. 2, 2012 08:30:11)

Офлайн

#7 Сен. 2, 2012 17:02:29

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Mozart
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)
А чем вы считали кол-во записей? Откуда вам известно что их 8 миллионов?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Сен. 2, 2012 20:20:07

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

PooH
Notepad++ сразу выводит количество строк в файле - http://gyazo.com/b9893069d3c72878e20c248bf0d4eaf5



Офлайн

#9 Сен. 2, 2012 20:26:59

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

Mozart, так может, это N++ лажается?

find /c /v "~`!@#$%^&*()_+f2874fg87gf28g3dzugsf" filename

Офлайн

#10 Сен. 2, 2012 20:32:20

Mozart
От:
Зарегистрирован: 2011-12-12
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с чтением из файла

odnochlen, вряд ли, у этого файла размер 477 метров, а файл на выходе, тот самый в котором получается 1.09 млн строк имеет размер 59 метров, так что логически в исходном файле действительно 8.2 млн. строк



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version