在 linux 中我们可以通过 mkdir -p 路径
的方式来创建一个多级路径,但在 paramiko sftp 中似乎没有对应的方法可以直接使用(参见 paramiko sftpClient 的 mkdir 方法)。我们可以通过如下的方式来创建目录并存储文件。
mysftp = paramiko.Transport((SFTP_HOST,SFTP_PORT))
mysftp.connect(username=SFTP_USERNAME, password=SFTP_PASSWORD)
sftpClient = paramiko.SFTPClient.from_transport(mysftp)
# Path = "sub1/sub2/sub3/"
pathList = Path.split("/")[0:-1]
for pathItem in pathList:
# 当该目录存在时,进入该目录,否则创建该目录并进入该目录
try:
sftpClient.chdir(pathItem)
except Exception as e:
sftpClient.mkdir(pathItem)
sftpClient.chdir(pathItem)
# 在此处存储文件
sftpClient.putfo(newFile, newFile.filename)
# 关闭连接
mysftp.close()