2017-11-14 3 views
-1

したがって、withキーワードをPythonで正しく使用する方法を読んでいましたが、withステートメント内で発生する可能性のある例外を処理する最善の方法を見つけられませんでした。だから私はファイルに値を書き込むための非常に簡単なスクリプトを書いています。withブロック内で例外を処理する方法

json = loads(response.read()) 
try: 
    with open(args.file, 'w') as t: 
    try: 
     t.write(json[TOKEN]) 
     print "Wrote token to {file!s}".format(file=args.file) 
    except KeyError: 
     print "Unable to find {token!s} in response".format(token=TOKEN) 
except IOError as bad: 
    print "Ran into an error while trying to open file {file!s}".format(file=args.file) 
    print "{err!s}".format(bad.message) 

私は、KeyErrorがファイルがまだ適切に閉じることが検出された場合、確実にしたいと思います。

+1

「[python」とは何のために設計されていますか?](https://stackoverflow.com/questions/3012488/what-is-the-python-with-statement-designed-for) – bgse

+0

"私は、KeyErrorがファイルがまだ適切に閉じることがわかっているかどうかを確かめたい」 - あなたの現在のコードで*閉鎖されないと思いますか? – user2357112

答えて

0

私は次の文書https://www.python.org/dev/peps/pep-0343/のコメントに記載されたリンクにある回答を見つけました。

withキーワードを使用するとどうなりますか。 withキーワードを使用するには、式に__enter__(self)__exit__(self, type, value, traceback)メソッドが必要です。 Pythonは__enter__()メソッドをコールした後にコードブロックを呼び出し、最後に__exit(self, type, value, traceback)メソッドを実行します。これにより、すべてのセットアップと解体がそれに応じて達成されることが保証されます。少なくともそれは私のキーワードの理解です。

+0

解決策を要約できますか?このサイトではリンクのみの回答はお勧めできません。 –

関連する問題