.write no funciona en Python

Soy bastante nuevo en Python, así que espero que me esté perdiendo algo obvio aquí, pero me ha dejado perplejo. Fragmento de mi progtwig a continuación:

outFile = open('P4Output.txt', 'w') outFile.write(output) print output print "Output saved to \"P4Output.txt\"\n" 

La salida se imprime correctamente en la consola, pero si abro el archivo, estará en blanco. Si borro el archivo y ejecuto mi progtwig nuevamente, el archivo se crea pero aún está vacío. Usé este mismo bloque de código exacto en otro progtwig mío anteriormente y funcionó, y aún funciona. Sin embargo, si abro Python e bash algo simple como:

 f = open('test.txt', 'w') f.write("test") 

Nuevamente, se crea test.txt pero se deja en blanco. ¿Lo que da?

¿ f.close() al final de tu progtwig?

Debido al almacenamiento en búfer, es posible que la cadena no aparezca en el archivo hasta que llame a flush() o close() . Así que trata de llamar a f.close() después de f.write() . También se recomienda usar with los objetos de archivo, cerrará automáticamente el archivo por usted incluso si sale del bloque with anticipación debido a una excepción o statement de return .

 with open('P4Output.txt', 'w') as f: f.write(output) 

Necesitas hacer un

 outFile.flush() 

Si desea que el contenido almacenado en el búfer se escriba en el disco. Si ha terminado de escribir en el archivo, una llamada file.close implícitamente los datos almacenados antes de cerrar el archivo.

Intente incluir sus declaraciones en un bloque try / catch para saber si ocurre algo durante la apertura o la escritura en el archivo:

 try: outFile = open('P4Output.txt','w') outFile.write(output) outFile.close() except IOError as (errno,strerror): print "I/O error({0}): {1}".format(errno, strerror) 

Y siempre cierre su archivo para que el sistema pueda vaciar sus datos en el archivo antes de cerrarlo.

tal vez deberías usar una ruta absoluta en lugar de una relativa.