代码之家  ›  专栏  ›  技术社区  ›  tree em

python paramiko,权限错误:[errno 13]从远程服务器获取文件时权限被拒绝

  •  1
  • tree em  · 技术社区  · 5 年前
    import paramiko, os
    paramiko.util.log_to_file('E:\Automation\paramiko.log')
    from stat import S_ISDIR
    host = "xx.xx.xxx.xxx"
    port = 22
    transport = paramiko.Transport((host, port))
    password = "password"
    username = "username"
    #transport.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    transport.connect(username = username, password = password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    
    def sftp_walk(remotepath):
        path=remotepath
        files=[]
        folders=[]
        for f in sftp.listdir_attr(remotepath):
            if S_ISDIR(f.st_mode):
                folders.append(f.filename)
            else:
                files.append(f.filename)
        if files:
            yield path, files
        for folder in folders:
            new_path=os.path.join(remotepath,folder)
            for x in sftp_walk(new_path):
                yield x
    
    
    for path,files  in sftp_walk("." or '/SourceData/CSV.EXTRACT/'):
        for file in files:
            sftp.get(os.path.join(os.path.join(path,file)), 'E:\InsightImport\CSV_EXTRACT')
    
    E:\Automation>python dw.export.py
    Traceback (most recent call last):
      File "dw.export.py", line 33, in <module>
        sftp.get(os.path.join(os.path.join(path,file)), 'E:\InsightImport\CSV_EXTRAC
      File "C:\Users\svc-cbsbir\AppData\Local\Programs\Python\Python37\lib\site-pack
        with open(localpath, "wb") as fl:
    PermissionError: [Errno 13] Permission denied: 'E:\\InsightImport\\CSV_EXTRACT'
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Martin Prikryl    5 年前

    第二个论点 SFTPClient.get 是一条通往本地 文件 . 当你好像经过一条路 目录 .

    另外,你不应该使用 os.path.join 在SFTP路径上。 OS.PATION连接 用于本地路径。sftp总是使用正斜杠,而 OS.PATION连接 使用本地操作系统特定的分隔符(在Windows上使用反斜杠)。

    sftp.get(path + '/' + file, os.path.join('E:\InsightImport\CSV_EXTRACT', file))