open( "hello.txt"、 "wb")をfとして使用: f.write( "Hello Python!\ n")
と同じようです
f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()
f=の代わりにopen..を使用する利点は何ですか?糖衣構文だけですか?1行のコードを保存するだけですか?
open( "hello.txt"、 "wb")をfとして使用: f.write( "Hello Python!\ n")
と同じようです
f = open("hello.txt", "wb")
f.write("Hello Python!\n")
f.close()
f=の代わりにopen..を使用する利点は何ですか?糖衣構文だけですか?1行のコードを保存するだけですか?
ステートメントバージョンと同等にするために、with
作成したコードは代わりに次のようになります。
f = open("hello.txt", "wb")
try:
f.write("Hello Python!\n")
finally:
f.close()
これは糖衣構文のように見えるかもしれませんが、リソースを確実に解放します。一般に、世界はこれらの不自然な例よりも複雑でありtry.. except...
、極端なケースを忘れたり、処理に失敗したりすると、リソースリークが発生します。
このwith
ステートメントは、これらのリークからあなたを救い、クリーンなコードを書きやすくします。完全な説明については、PEP343を参照してください。多くの例があります。
f.write
例外をスローする場合は、f.close()
を使用するときにwith
呼び出され、2番目のケースでは呼び出されません。またf
、スコープが小さく、使用時にコードがクリーンになりますwith.
f
の間に例外が発生した場合、前者は引き続き閉じますf.write()
。