我想用Python在远程服务器上上传一个文件。我想事先检查远程路径是否真的存在,如果不存在,就创建它。在伪代码中:
if(remote_path not exist):
create_path(remote_path)
upload_file(local_file, remote_path)
我正在考虑在Paramiko中执行一个命令来创建路径(例如mkdir -p remote_path
)。我想到了这个:
# I didn't test this code
import paramiko, sys
ssh = paramiko.SSHClient()
ssh.connect(myhost, 22, myusername, mypassword)
ssh.exec_command('mkdir -p ' + remote_path)
ssh.close
transport = paramiko.Transport((myhost, 22))
transport.connect(username = myusername, password = mypassword)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(local_path, remote_path)
sftp.close()
transport.close()
但这个解决方案听起来不太好,因为我关闭了连接,然后重新打开。有更好的办法吗?
今天不得不这么做。我就是这样做的。
SFTP支持常用的FTP命令(chdir、mkdir等),因此请使用以下命令:
要完全模拟
mkdir -p
,可以递归地通过远程路径:当然,如果remote_path还包含远程文件名,则需要将其拆分,将目录传递给mkdir_p,并在sftp.put中使用文件名而不是“.”。
一些简单易懂的东西
相关问题 更多 >
编程相关推荐