2017-10-10 8 views
1

J'essaie de copier des fichiers du serveur SFTP. Je peux me connecter en utilisant python pysftp. je peux courir:python pysftp [Errno 13] Autorisation refusée:

data = srv.listdir() 
for i in data: 
print I 

Et j'obtenir la liste d'annuaire. Mais quand j'essaie

sftp.put (localpath,"file_name.txt") 

-je obtenir

"IOError: [Errno 13] Permission denied: 'C:\....."

J'ai la permission de ce dossier, parce que je peux courir MKDIR et il crée un répertoire dans ce chemin de fichier. J'ai essayé beaucoup de manières différentes mais aucune chance jusqu'ici, n'importe quelle aide est vraiment appréciée.

import pysftp 
import os 

def sftpExample(): 
cnopts = pysftp.CnOpts() 
cnopts.hostkeys = None 

with pysftp.Connection('HOST', username='username', password='Password', cnopts=cnopts) as sftp : 

    print 'connected ' 
    localpath="C:\\new project\\new" 
      remotepath="/folder1" 
    sftp.put(localpath,"infso.txt") 

sftp.put(localpath,remotepath) 
sftp.getfo (remotepath, localpath) 
srv.get_r(localpath, remotepath) 
srv.close() 

sftpExample() 

Je reçois ce code d'erreur:

Traceback (most recent call last): 
File "db_backup.py", line 42, in <module> 
sftpExample() 
File "db_backup.py", line 17, in sftpExample 
sftp.put(localpath,"GT-Dallas SFTP infso.txt") 
File "c:\Python27\lib\site-packages\pysftp\__init_.py", line 364, in put 
confirm=confirm) 
File "c:\Python27\lib\site-packages\paramiko\sftp_client.py", line 720, in put 
with open(localpath, 'rb') as fl: 
IOError: [Errno 13] Permission denied: "C:\\new project\\new" 

J'ai essayé toutes les différentes manières de copier le fichier comme vous voyez mais je l'ai pas eu de chance jusqu'à présent.

Répondre

0

Il y a quelques choses qui pourraient être la cause de votre problème, mais celui qui se démarque me vient de votre message d'erreur:

IOError: [Errno 13] Permission denied: "C:\\new project\\new" 

Il est peut-être que vous avez besoin pour échapper à l'espace ("\ ") ou le mettre dans une chaîne de caractères r"C:\My Path With Spaces"

Mais dans tous les cas, j'éviterais d'utiliser des espaces dans vos noms de fichiers, et vous devriez renommer votre dossier de projet à quelque chose comme new_project ou newproject.

Une autre chose qui rendrait la vie plus facile est de savoir si vous avez compressé votre répertoire dans un seul fichier d'archive (.tgz ou .zip ou quelque chose) et le transfert ce fichier.