Найти - Пользователи
Полная версия: Проблема с чтением из файла
Начало » Python для новичков » Проблема с чтением из файла
1 2
Mozart
Есть файл, в нем 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

Спасибо за ответ
mironich
А если в память сразу все(весь файл) считать?
bufferSize = 55555#Кол-во оперативы под буфер
print len(open('queries.txt', 'r', bufferSize).readlines())

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

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

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

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

Какой размер файла?
mironich
Mozart
У тебя на скрине, указан размер буфера который я с потолка взял, а ты укажи равный размеру файла +- несколько кб.
Mozart
odnochlen - да, под записью я имел ввиду количество строк в файле, размер файла 480 метров.

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

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

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

Я думаю проблема с файлом все таки какая то, тем более я не могу у него даже кодировку сменить, просто отказывается её менять и все (Через Notepad и EmEditor)
PooH
Mozart
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)
А чем вы считали кол-во записей? Откуда вам известно что их 8 миллионов?
Mozart
PooH
Notepad++ сразу выводит количество строк в файле - http://gyazo.com/b9893069d3c72878e20c248bf0d4eaf5
odnochlen
Mozart, так может, это N++ лажается?

find /c /v "~`!@#$%^&*()_+f2874fg87gf28g3dzugsf" filename
Mozart
odnochlen, вряд ли, у этого файла размер 477 метров, а файл на выходе, тот самый в котором получается 1.09 млн строк имеет размер 59 метров, так что логически в исходном файле действительно 8.2 млн. строк
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB