我无法从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()
答案 0 :(得分:1)
您希望提取的文件显示在服务器上,即使您在客户端计算机上提取它们也是如此。不幸的是,这不会飞,因为zipfile.extract
方法假定它的第二个参数是本地路径。
您可以考虑创建一个用于提取文件的本地临时目录,但是您必须将每个文件复制回服务器上的所需目标。这似乎不是对分布式资源的合理使用,但如果您没有对服务器的shell访问权限,那么它可能是您可以做的最好的。
如果你做对服务器有shell访问权限,那么考虑使用fabric
或paramiko
之类的东西在服务器系统上执行必要的命令。