Je souhaite télécharger récursivement des fichiers depuis un serveur Linux vers un bureau Windows. J'utilise le code suivant:Transfert de fichiers avec pysftp.get_r entre linux et windows
import pysftp
import sys
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
with pysftp.Connection(host="192.168.1.1", username="user", password="secret", cnopts=cnopts) as sftp:
sftp.get_r ('test_sftp', 'C:\\Users\\user\\Desktop\\my_dir\\', preserve_mtime=False)
sftp.close()
Je l'encoutered l'erreur suivante (lors de la copie récursive les fichiers):
Traceback (most recent call last):
File "blah.py", line 12, in <module>
sftp.get_r ('teste_sftp', 'C:\\Users\\user\\Desktop\\my_dir\\', preserve_mtime=False)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pysftp\__init__.py", line 311, in get_r
preserve_mtime=preserve_mtime)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\pysftp\__init__.py", line 249, in get
self._sftp.get(remotepath, localpath, callback=callback)
File "C:\Users\user\AppData\Local\Programs\Python\Python36\lib\site-packages\paramiko\sftp_client.py", line 720, in get
with open(localpath, 'wb') as fl:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\user\\Desktop\\my_dir\\test_sftp/n1/M51'
Je comprends que pysftp tente de recréer la structure des dossiers de la source dans le dossier de destination, mais il n'est pas sensible au fait qu'il fonctionne sur une machine Windows et que les barres obliques devraient être des barres obliques inverses.
Comment y remédier?
Avez-vous vérifié cela? http://stackoverflow.com/questions/24427283/getting-a-files-from-remote-path-to-local-dir-using-sftp-in-python – Valilutzik
@Valilutzik, je l'ai fait. Cela semble être un problème d'autorisation système, et il utilise également une fonction différente dans paramiko. – LuizAngioletti