无法将 python 中的 zip 从我的本地主机提取到目标文件夹(服务器)
Unable to extract zip in python to destination folder(server) from my local host
我无法将 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()
您似乎希望提取的文件出现在服务器上,即使您是在客户端计算机上提取它们。不幸的是,这是行不通的,因为 zipfile.extract
方法假定它的第二个参数是本地路径。
您可以考虑创建一个本地临时目录来提取文件,但随后您必须将每个文件复制回服务器上的所需目标位置。这似乎不是对分布式资源的明智使用,但如果您没有 shell 访问服务器的权限,这可能是您能做的最好的事情。
如果您 可以 shell 访问服务器然后考虑使用 fabric
或 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()
您似乎希望提取的文件出现在服务器上,即使您是在客户端计算机上提取它们。不幸的是,这是行不通的,因为 zipfile.extract
方法假定它的第二个参数是本地路径。
您可以考虑创建一个本地临时目录来提取文件,但随后您必须将每个文件复制回服务器上的所需目标位置。这似乎不是对分布式资源的明智使用,但如果您没有 shell 访问服务器的权限,这可能是您能做的最好的事情。
如果您 可以 shell 访问服务器然后考虑使用 fabric
或 paramiko
之类的东西来执行必要的命令服务器系统。