Форум сайта python.su
0
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)
Вот 1 из примеров кода:
with open("queries.txt", "r") as f:
a = f.read().splitlines()
len(a)
# Выведет - 1090885Отредактировано Mozart (Сен. 1, 2012 23:09:08)
Офлайн
2
А если в память сразу все(весь файл) считать?
bufferSize = 55555#Кол-во оперативы под буфер print len(open('queries.txt', 'r', bufferSize).readlines())
with open("queries.txt", "r") as f: a = f.read().splitlines() len(a)
Отредактировано mironich (Сен. 1, 2012 23:10:33)
Офлайн
0
Не помогло, вот скриншот для наглядности - http://gyazo.com/b4f9aad038f3d5cb29ee8d4996f5be0b
Самое смешное то, что есть еще 1 файл на 3 миллиона записей, но он почему то полностью читается и длина выводится верно, мб дело в самом файле, битый он что ли какой …
Офлайн
14
Что такое “запись”? Строка?
И зачем читать его весь в память? По строчке нельзя?
Какой размер файла?
Офлайн
2
MozartУ тебя на скрине, указан размер буфера который я с потолка взял, а ты укажи равный размеру файла +- несколько кб.
Офлайн
0
odnochlen - да, под записью я имел ввиду количество строк в файле, размер файла 480 метров.
Построчно я так же пробовал, результат тот же - http://gyazo.com/c869096cb1d63a56bd79690ed9193014
mironich - ставил разные значения, до 1 млрд., не помогает это.
Вообще, сейчас специально сделал файл на 9,15 млн. строк, все нормально считается, как сразу в память, так и построчно, скрин - http://gyazo.com/3c4f2f7ef92fe2e7b5e7625e684d4049
Я думаю проблема с файлом все таки какая то, тем более я не могу у него даже кодировку сменить, просто отказывается её менять и все (Через Notepad и EmEditor)
Отредактировано Mozart (Сен. 2, 2012 08:30:11)
Офлайн
72
MozartА чем вы считали кол-во записей? Откуда вам известно что их 8 миллионов?
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)
Офлайн
0
PooH
Notepad++ сразу выводит количество строк в файле - http://gyazo.com/b9893069d3c72878e20c248bf0d4eaf5
Офлайн
14
Mozart, так может, это N++ лажается? 
find /c /v "~`!@#$%^&*()_+f2874fg87gf28g3dzugsf" filename
Офлайн
0
odnochlen, вряд ли, у этого файла размер 477 метров, а файл на выходе, тот самый в котором получается 1.09 млн строк имеет размер 59 метров, так что логически в исходном файле действительно 8.2 млн. строк
Офлайн