1. ホーム
  2. python

[解決済み】何が原因で「IOError: [Errno 9] Bad file descriptor" が os.system() 中に発生するのはなぜですか?

2022-01-28 11:38:13

質問

私は科学的なソフトウェアを使用しており、Pythonスクリプトを使用しています。 os.system() このプログラムは、別の科学プログラムを実行するために使用されます。サブプロセスの実行中、Pythonはある時点で次のように表示します。

close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor

というメッセージが同時に表示されると思います。 os.system() を返します。

今の私の疑問は

このタイプのIOErrorは、どのような条件で発生するのでしょうか?具体的にはどのような意味ですか?によって呼び出されたサブプロセスにはどのような意味があるのでしょうか? os.system() ?

解決方法は?

Python ファイルが外側から閉じられた場合、つまりファイルオブジェクトの close() メソッドを使用します。

>>> f = open(".bashrc")
>>> os.close(f.fileno())
>>> del f
close failed in file object destructor:
IOError: [Errno 9] Bad file descriptor

del f はファイルオブジェクトへの最後の参照を削除し、そのデストラクタを file.__del__ が呼び出されます。 ファイルオブジェクトの内部状態は、ファイルがまだ開いていることを示す f.close() が呼ばれなかったので、デストラクタはファイルを閉じようとします。 OSはその後、開いていないファイルを閉じようとしたため、エラーを投げます。

を実装しているため os.system() はPythonのファイルオブジェクトを一切生成しないので system() の呼び出しがエラーの原因です。 もう少しコードを見せていただけませんか?