helm2004
Фев. 27, 2009 16:51:10
Доброго времени суток!
Есть файл размером с 1.5 гига. Так вот мне нужно чтоб его считать побайтно, а не весь сразу(для того чтоб памяти много не жрал). В книгах таких примеров не видел. Есть такая ф-ция f.read(1) - но как заставить её работать в цикле? Спасибо за внимание
Ferroman
Фев. 27, 2009 17:24:41
Есть такая ф-ция f.read(1) - но как заставить её работать в цикле?
Ну, делаете цикл и вызываете её в цикле.
helm2004
Фев. 27, 2009 17:39:51
А как узнать сколько в файле байт?
helm2004
Фев. 27, 2009 17:48:59
Всё, решил с помощью лома и какой то матери:
import os,stat
st=os.stat(“1.txt”)
print type(st)
f=open(“1.txt”,“r”)
i=0
while i<st:
if (f.read(2)==“va”):
print “Нашёл!!!”
i+=1
f.close()
Может кто оптимизацию подскажет - буду только признателен!
igor.kaist
Фев. 27, 2009 17:49:23
import os
print os.stat(FILENAME)[6]
А зачем while использовать, если можно проще:
for x in xrange(filesize):
#do something
helm2004
Фев. 27, 2009 19:13:00
igor.kaist
спасибо!!!
helm2004
Фев. 27, 2009 19:30:08
Я вообще считаю, что пути оптимизации нет придела. Даже 2*2 можно оптимизировать.
Ferroman
Фев. 27, 2009 20:25:22
А как узнать сколько в файле байт?
Я бы крутил, пока бы на EOF не наткнулся.
helm2004
Фев. 27, 2009 20:54:29
Ferroman
Я бы крутил, пока бы на EOF не наткнулся.
Подскажите, плизь!
ZAN
Фев. 28, 2009 00:03:56
>>> f = open('f')
>>> s = f.read(1)
>>> while s:
... print s
... s = f.read(1)
...
H
e
l
l
o
W
o
r
l
d
!