我正在使用 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”语句的情况下编写我的例程,我只是想知道这里的交易是什么。