0
Qt4.8文檔(如提到的here)表明QtCore.QFile對象在銷燬時關閉其文件(如果該文件已打開)。PyQt4.QtCore.QFile.open()的行爲與Python的open()一樣嗎?
難道說,這PyQt4的片斷
my_file = QtCore.QFile('some_file.bin')
my_file.open(QtCore.QFile.ReadOnly)
... do stuff that might raise an exception ...
類似於這種非PyQt的片段?
with open('some_file.bin', 'rb') as my_file:
... do stuff that might raise an exception ...
即,在該文件的條件時出現錯誤,並且程序退出(如例如討論here)被自動關閉。
感謝您的明確答案和很好的例子。還有一件事:假設在QFile.open()之後,我做了一些與該文件無關的事情,即_does_引發了一個異常,該異常未被捕獲並導致程序退出。在那種情況下,我猜QFile會被刪除,所以文件_will_會自動關閉? – Dennis
@丹尼斯。它取決於是否還有對'QFile'的引用。如果有任何事情保持活躍狀態,一個例外*本身*不會導致它自動關閉。但是,當然,如果程序退出,它最終會被刪除。 – ekhumoro