xticks barplot python file flush

python - barplot - pandas plot



¿Con qué frecuencia Python descarga a un archivo? (5)

  1. ¿Con qué frecuencia Python descarga a un archivo?
  2. ¿Con qué frecuencia Python descarga a stdout?

No estoy seguro de (1).

En cuanto a (2), creo que Python se va al stdout después de cada línea nueva. Pero, si sobrecarga stdout a un archivo, ¿se vacía tan a menudo?


Aquí hay otro enfoque, hasta el OP para elegir cuál prefiere.

Al incluir el código a continuación en el archivo __init__ .py antes de cualquier otro código, los mensajes impresos con print y cualquier error ya no se registrarán en Ableton''s Log.txt, sino que se separarán los archivos en su disco:

import sys path = "/Users/#username#" errorLog = open(path + "/stderr.txt", "w", 1) errorLog.write("---Starting Error Log---/n") sys.stderr = errorLog stdoutLog = open(path + "/stdout.txt", "w", 1) stdoutLog.write("---Starting Standard Out Log---/n") sys.stdout = stdoutLog

(para Mac, cambie #username# por el nombre de su carpeta de usuario. En Windows, la ruta a su carpeta de usuario tendrá un formato diferente)

Cuando abre los archivos en un editor de texto que actualiza su contenido cuando se cambia el archivo en el disco (ejemplo para Mac: TextEdit no lo hace, pero TextWrangler sí), verá que los registros se actualizan en tiempo real.

Créditos: este código fue copiado principalmente de las secuencias de comandos de la superficie liveAPI de Nathan Ramella


No sé si esto se aplica también a Python, pero creo que depende del sistema operativo que esté ejecutando.

En Linux, por ejemplo, la salida al terminal vacía el búfer en una línea nueva, mientras que para la salida a los archivos solo se vacía cuando el búfer está lleno (de manera predeterminada). Esto se debe a que es más eficiente vaciar el búfer menos veces, y es menos probable que el usuario se dé cuenta si la salida no se vacía en una nueva línea en un archivo.

Es posible que pueda purgar automáticamente la salida si eso es lo que necesita.

EDITAR: Creo que se auto-enjuague en python de esta manera (desde here )

#0 means there is no buffer, so all output #will be auto-flushed fsock = open(''out.log'', ''w'', 0) sys.stdout = fsock #do whatever fsock.close()


Para las operaciones de archivos, Python usa 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 búfer de línea.

Por ejemplo, la función abierta 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 del archivo: 0 significa no búfer, 1 significa búfer de línea, cualquier otro valor positivo significa usar un búfer de (aproximadamente) ese tamaño. Un almacenamiento en búfer negativo significa usar el sistema predeterminado, que generalmente es línea amortiguado para dispositivos tty y totalmente almacenado en el búfer para otros archivos. Si se omite, se usa el sistema predeterminado " .

bufsize = 0 f = open(''file.txt'', ''w'', bufsize)


También puede obligar a vaciar el búfer a un archivo mediante programación mediante el método flush() .

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()

Lo encontré útil al rastrear un archivo de salida con tail -f .


También puede verificar el tamaño del búfer predeterminado llamando al atributo de solo lectura DEFAULT_BUFFER_SIZE del módulo io.

import io print (io.DEFAULT_BUFFER_SIZE)