¿Con qué frecuencia Python descarga un archivo?
- ¿Con qué frecuencia Python descarga un archivo?
- ¿Con qué frecuencia Python se descarga a la salida estándar?
No estoy seguro de (1).
En cuanto a (2), creo que Python pasa a la salida estándar después de cada nueva línea. Pero, si sobrecarga la salida estándar para que sea un archivo, ¿se descarga con tanta frecuencia?
Para las operaciones con archivos, Python utiliza el almacenamiento en búfer predeterminado del sistema operativo a menos que lo configure de otra manera. Puede especificar un tamaño de búfer, sin búfer o con búfer de línea.
Por ejemplo, la función de apertura toma un argumento de tamaño de búfer.
http://docs.python.org/library/functions.html#open
"El argumento de almacenamiento en búfer opcional especifica el tamaño de búfer deseado para el archivo:"
- 0 significa sin búfer,
- 1 significa línea almacenada en búfer,
- cualquier otro valor positivo significa utilizar un búfer de (aproximadamente) ese tamaño.
- Un almacenamiento en búfer negativo significa utilizar el valor predeterminado del sistema, que generalmente tiene un búfer de línea para dispositivos tty y un búfer completo para otros archivos.
- Si se omite, se utiliza el valor predeterminado del sistema.
código:
bufsize = 0
f = open('file.txt', 'w', buffering=bufsize)
También puede forzar el vaciado del búfer en un archivo mediante programación con el flush()
método.
with open('out.log', 'w+') as f:
f.write('output is ')
# some work
s = 'OK.'
f.write(s)
f.write('\n')
f.flush()
# some other work
f.write('done\n')
f.flush()
Esto me ha resultado útil al seguir un archivo de salida con tail -f
.