Voglio caricare un file su un server remoto con Python. Vorrei verificare in anticipo se il percorso remoto è realmente esistente e, in caso contrario, per crearlo. In pseudocodice:Carica file usando SFTP in Python, ma crea directory se il percorso non esiste
if(remote_path not exist):
create_path(remote_path)
upload_file(local_file, remote_path)
Stavo pensando di esecuzione di un comando in paramiko per creare il percorso (ad esempio mkdir -p remote_path
). Sono arrivato fino a questo:
# 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()
Ma questa soluzione non suona bene a me, perché io chiudo la connessione e quindi riaprirlo di nuovo. C'è un modo migliore per farlo?
correlati: [os.renames per ftp in python] (http://stackoverflow.com/q/14641267/4279) – jfs