无法从我的本地主机将python中的zip解压缩到目标文件夹(服务器)

时间:2016-10-04 10:18:36

标签: python ssh sftp paramiko

我无法从python中将zip文件从本地主机提取到目标文件夹(服务器)。使用z.extract(name,"/destination/")进行提取时,无法找到目标文件夹,因为它尝试在本地搜索目标文件夹而不是服务器。

    transport = paramiko.Transport((destinationIP))
    transport.connect(username = destinationuserName, password =   destinationPassword)
    sftp = paramiko.SFTPClient.from_transport(transport)

    fh = sftp.open('/destination/xxx.zip', 'rb')
    z = zipfile.ZipFile(fh)
    for name in z.namelist():
        print name
        z.extract(name,"/destination/") 
    fh.close()
    sftp.close()

1 个答案:

答案 0 :(得分:1)

您希望提取的文件显示在服务器上,即使您在客户端计算机上提取它们也是如此。不幸的是,这不会飞,因为zipfile.extract方法假定它的第二个参数是本地路径。

可以考虑创建一个用于提取文件的本地临时目录,但是您必须将每个文件复制回服务器上的所需目标。这似乎不是对分布式资源的合理使用,但如果您没有对服务器的shell访问权限,那么它可能是您可以做的最好的。

如果你对服务器有shell访问权限,那么考虑使用fabricparamiko之类的东西在服务器系统上执行必要的命令。