pysftp モジュールを使用して、いくつかのファイルを FTP サイトに配置する機能を実装しています。バージョン 0.29 のクックブックの提案に従って、with ステートメントで接続を開きました。
with psyftp.Connection(host=SERVER, port=PORT, username=USER, password=PASS) as ftp:
(パラメータ名にすべて大文字を使用することは理想的な Python スタイルではないことはわかっています。判断しないでください。)これを実行すると、次の結果が得られます。
AttributeError: __exit__
StackOverflow に関する調査によると、これはwith
ステートメントがメソッドを持つオブジェクトを必要とするために発生__enter__
し__exit__
ます。with
それらを含まないオブジェクト、つまりコンテキストマネージャーではないオブジェクトで使用すると、このエラーが発生します。
pysftp は、その主張にもかかわらず、実際にはコンテキスト マネージャーではないのでしょうか?それとも、もっと微妙なことが起こっているのでしょうか? "with" ステートメントに依存せずにルーチンをプログラムできます。