首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pysftp真的是上下文感知的吗?

pysftp真的是上下文感知的吗?
EN

Stack Overflow用户
提问于 2014-12-24 04:31:26
回答 1查看 315关注 0票数 1

我正在使用pysftp模块实现一个将一些文件放到FTP站点上的功能。按照0.29版食谱中的建议,我在with语句中打开了连接:

代码语言:javascript
复制
with psyftp.Connection(host=SERVER, port=PORT, username=USER, password=PASS) as ftp:

(我知道使用全大写作为参数名不是理想的python风格。请不要评判。)运行此命令将导致:

代码语言:javascript
复制
AttributeError: __exit__

对StackOverflow的研究表明,这是因为with语句需要一个具有__enter____exit__方法的对象。当你在一个不包含它们的对象上使用with时,你会得到这个错误,例如,不是上下文管理器。

pysftp不是一个真正的上下文管理器,尽管它声称,还是有一些更微妙的事情正在发生?我可以在不依赖"with“语句的情况下编写我的例程,我只是想知道这是怎么回事。

EN

回答 1

Stack Overflow用户

发布于 2019-08-29 15:32:18

Contextmanager正在使用当前版本:

代码语言:javascript
复制
import pysftp
with pysftp.Connection(self.server_ip, username=self.username, password=self.password) as sftp:
    for attr in sftp.listdir_attr(remotepath=remote_path):
        print(attr.filename, attr.st_size, sftp.isdir(remote_path + "/" + attr.filename))

注意:ftplib != FTP,如果你想连接到FTP服务器,请使用FTP

代码语言:javascript
复制
from ftplib import FTP
with FTP("ftp1.at.proftpd.org") as ftp:
    #do your stuff here

SFTP = SSH文件传输协议,FTP =文件传输协议

FTPS (也称为

、FTPS和FTP Secure)是对常用文件传输协议的扩展,它添加了对传输层安全性(TLS)和以前的安全套接字层(安全套接字层,现在被RFC7568禁止)加密协议的支持。

不应将FTPS与SSH文件传输协议(SFTP)混淆,后者是安全外壳(SSH)协议的安全文件传输子系统,与它不兼容。它也不同于基于SSH的FTP,后者是通过SSH连接通过隧道传输FTP的实践。-- FTPS Wikipedia

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27627583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档