I am using a scientific software including a Python script that is calling os.system() which is used to run another scientific program. While the subprocess is running, Python at some point prints the following:
close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor
I believe that this message is printed at the same time as os.system() returns.
My questions now are:
Which conditions can lead to this type of IOError? What does it exactly mean? What does it mean for the subprocess that has been invoked by os.system()?
You get this error message if a Python file was closed from “the outside”, i.e. not from the file object’s
close()method:The line
del fdeletes the last reference to the file object, causing its destructorfile.__del__to be called. The internal state of the file object indicates the file is still open sincef.close()was never called, so the destructor tries to close the file. The OS subsequently throws an error because of the attempt to close a file that’s not open.Since the implementation of
os.system()does not create any Python file objects, it does not seem likely that thesystem()call is the origin of the error. Maybe you could show a bit more code?