En Python, para un archivo binario, que puede escribir lo siguiente:archivo Python iterador sobre un archivo binario con nuevos modismo
buf_size=1024*64 # this is an important size...
with open(file, "rb") as f:
while True:
data=f.read(buf_size)
if not data: break
# deal with the data....
Con un archivo de texto que quiero leer línea por línea, lo que pueda escribir esto:
with open(file, "r") as file:
for line in file:
# deal with each line....
Cuál es la abreviatura:
with open(file, "r") as file:
for line in iter(file.readline, ""):
# deal with each line....
este idioma se documenta en PEP 234 pero tengo Faile d para localizar un modismo similar para archivos binarios.
He intentado esto:
>>> with open('dups.txt','rb') as f:
... for chunk in iter(f.read,''):
... i+=1
>>> i
1 # 30 MB file, i==1 means read in one go...
He intentado poner iter(f.read(buf_size),'')
pero eso es un error de sintaxis debido a los parens después de la exigible en el iter().
Sé que podría escribir una función, pero ¿hay forma de utilizar el idioma por defecto for chunk in file:
donde puedo usar un tamaño de buffer frente a una línea?
Gracias por aguantar al novato de Python al intentar escribir su primer guion Python no trivial e idiomático.
Supuse que había alguna forma incorporada que solo estaba pasando por alto. Dado que parece no haber una forma integrada, esto es fácil de leer y sencillo. ¡Gracias! – dawg