Chcę przesłać plik na zdalny serwer za pomocą Pythona. Chciałbym wcześniej sprawdzić, czy ścieżka zdalna rzeczywiście istnieje, a jeśli nie, to ją utworzyć. W pseudokodzie:Przesyłaj pliki za pomocą SFTP w Pythonie, ale twórz katalogi, jeśli ścieżka nie istnieje
if(remote_path not exist):
create_path(remote_path)
upload_file(local_file, remote_path)
I myślał o wykonania polecenia w Paramiko utworzyć ścieżkę (np mkdir -p remote_path
). Wpadłem na to:
# 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()
Jednak rozwiązanie to nie brzmi dobrze dla mnie, bo zamknięcie połączenia i ponownie otworzyć go ponownie. Czy istnieje lepszy sposób na zrobienie tego?
pokrewne: [os.renames dla FTP w python] (http://stackoverflow.com/q/14641267/4279) – jfs