0

次のコードがあるとしましょう。

file1 = open("myfile","w")

#Write to file1...

#Open Second File
file2 = open("otherfile","w")

#Write to file2...

file1.close()

file1 = file2

file2.close()

これにより、事実上すべてのファイルが閉じられますか、それともfile1にはまだ書き込み可能な開いているファイル(otherfile)がありますか?

4

3 に答える 3

2

はい。(明確にするために、両方のファイルオブジェクトは閉じられ、書き込むことができなくなります)変数名は、基になるオブジェクトへの単なる参照です。オブジェクトに対してメソッドを呼び出すと、close()そのオブジェクトにアクセスしてそのメソッドを実行します。後で両方のオブジェクトを調べると、次のことがわかります。

>>> file1
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> file2
<closed file 'file2.txt', mode 'w' at 0x10045e930>
>>> 

この状況では、file1 = file2両方が同じ閉じたファイルオブジェクトを参照するように設定していることに注意してください。元のオブジェクトへの参照がなくなるfile1と、そのオブジェクトはガベージコレクションされます。

于 2012-06-28T16:52:19.863 に答える
1

いいえ、最後から2番目の行で、file1file2によって閉じられている同じファイルオブジェクトを参照していますfile2.close()。Python変数はオブジェクトを指す名前にすぎないため、1つの名前に対して行うことは、そのオブジェクトを指すすべての名前に対して行われます。

于 2012-06-28T16:52:09.630 に答える
0

再割り当てする前にfile1を閉じたため、両方のファイルが閉じられます

于 2012-06-28T16:54:00.263 に答える