Форум сайта python.su
14
И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.
Офлайн
0
Андрей СветловМожет я чего-то недопонял, но якобы имеется файл порядка 500 Мб, и длина каждой записи как раз расстояние между терминаторами ?
И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.
>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])
Отредактировано (Фев. 2, 2011 15:16:57)
Офлайн
33
erlВ файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
теперь из массива не могу нормальные данные достать, все перековеркалось.
Отредактировано (Фев. 2, 2011 14:51:16)
Офлайн
0
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])
Офлайн
0
LexanderДа скорее всего с кодировками, но так все перековеркона, что не возможно разобраться что искать…erlВ файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
теперь из массива не могу нормальные данные достать, все перековеркалось.
В том смысле, что полученные в массив символы (или часть их) нужно трактовать как строки в какой-то определенной кодировке.
Офлайн
0
erlЭто пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …
Офлайн
7
asv13А если метка находится на нечетной позиции? uint16 уже не прокатит.
Это пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.
Отредактировано (Фев. 4, 2011 10:45:44)
Офлайн
0
Здравствуйте
А если конец записи обозначается двумя байтами 0xff и 0x32 как быть длинна ведь произвольна, у меня получается так что максимальное время за которое я просто прохожу файл с выводом в другой файл выбранных записей 11 минут.
Если кто нибудь скажет как ускорить буду благодарен. Суть уже стоит в том, что сам по себе python, если он не умеет выполнять быстрее или я не умею написать более быстрый алгоритм, то вроде как уходим с разработкой на яву :-), а честное слово не хочется, это поновой изучать язык… значит тратить время, при чем личное … поможите плиз, если это возможно.
Отредактировано (Фев. 8, 2011 09:59:53)
Офлайн
0
erlСам скрипт не покажете ?
Если кто нибудь скажет как ускорить буду благодарен.
Офлайн
14
Не нужен здесь pypy и Ява не правит в автоматическом режиме кривые руки.
Кстати, а характерная длина записи какая? Ну там сотня-другая байт или они обычно мегабайтные?
Да, и код - очень помогает выявить проблему.
Офлайн