Tôi muốn tải tệp lên máy chủ từ xa bằng Python. Tôi muốn kiểm tra trước nếu con đường từ xa thực sự tồn tại, và nếu nó không phải là, để tạo ra nó. Trong mã giả:Tải tệp lên bằng SFTP bằng Python, nhưng tạo thư mục nếu đường dẫn không tồn tại
if(remote_path not exist):
create_path(remote_path)
upload_file(local_file, remote_path)
Tôi đã suy nghĩ về việc thực hiện lệnh trong Paramiko để tạo đường dẫn (ví dụ: mkdir -p remote_path
). Tôi đến với điều này:
# 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()
Nhưng giải pháp này không có âm thanh tốt với tôi, vì tôi đóng kết nối và sau đó mở lại nó một lần nữa. Có cách nào tốt hơn để làm điều đó không?
liên quan: [os.renames for ftp in python] (http://stackoverflow.com/q/14641267/4279) – jfs