我正在使用 pysftp 和 Python 3.7 来设置 SFTP 客户端脚本。
我的代码(简化和最小化):
import pysftp
import sys
# Variables
destination_dir = 'BOGUS_DIR'
server = 'myserver.mydomain.com'
user = 'my_user'
key = 'my_key'
port = 22
# cnopts
mycnopts = pysftp.CnOpts()
mycnopts.log = True
mycnopts.compression = True
mycnopts.ciphers = None
mycnopts.hostkeys = None
try:
with pysftp.Connection(server, username=user, private_key=key, port=port, cnopts=mycnopts) as sftp:
try:
with sftp.cd(destination_dir):
print("OK cd worked")
except:
print("NOT OK cd failed")
e = sys.exc_info()
print("Exception: {0}".format(e))
if sftp.isdir(destination_dir):
print("OK isdir")
else:
print("NOT OK isdir")
except:
print("Connection failure.")
e = sys.exc_info()
print("Exception: {0}".format(e))
输出是:OK cd 工作
BOGUS_DIR但我知道一个不存在的事实。就像 pysftp 没有引发异常cd(),或者我抓错了(因此我的 python 代码没有正确完成)。
同样isdir(),无论我作为参数输入什么,True即使目录不存在,它也总是返回。
如果我因错误而更改连接参数,我会捕获连接失败异常。
pyftp 处理异常是错误的,还是我的代码有问题?我应该不信任 pysftp 并直接使用 Paramiko 吗?
慕尼黑的夜晚无繁华
翻翻过去那场雪
相关分类