python - btcommon - ¿Qué puede llevar a "IOError:[Errno 9] descriptor de archivo incorrecto" durante os.system()?
bluetooth error 9 bad file descriptor '') (2)
Obtendrá este mensaje de error si un archivo Python se cerró desde "el exterior", es decir, no desde el método close()
del objeto de archivo:
>>> f = open(".bashrc")
>>> os.close(f.fileno())
>>> del f
close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor
La línea del f
elimina la última referencia al objeto de archivo, lo que hace file.__del__
a su file.__del__
destructor file.__del__
. El estado interno del objeto de archivo indica que el archivo sigue abierto desde que nunca se llamó a f.close()
, por lo que el destructor intenta cerrar el archivo. El sistema operativo posteriormente lanza un error debido al intento de cerrar un archivo que no está abierto.
Dado que la implementación de os.system()
no crea ningún objeto de archivo Python, no parece probable que la llamada a system()
sea el origen del error. Tal vez usted podría mostrar un poco más de código?
Estoy usando un software científico que incluye un script de Python que llama os.system()
que se usa para ejecutar otro programa científico. Mientras se ejecuta el subproceso, Python en algún punto imprime lo siguiente:
close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor
Creo que este mensaje se imprime al mismo tiempo que os.system()
.
Mis preguntas ahora son:
¿Qué condiciones pueden llevar a este tipo de IOError? ¿Qué significa exactamente? ¿Qué significa para el subproceso que ha sido invocado por os.system()
?
Puede obtener este error si utiliza el modo incorrecto al abrir el archivo. Por ejemplo:
with open(output, ''wb'') as output_file:
print output_file.read()
En ese código, quiero leer el archivo, pero uso el modo wb
lugar de r
o r+