【问题标题】:Unzip a zip file on remote server using Python使用 Python 在远程服务器上解压缩 zip 文件
【发布时间】:2021-10-05 07:29:46
【问题描述】:

我需要编写 Python 代码来登录远程服务器并导航到 Zip 文件路径,然后解压缩并保存在远程服务器上。 下一步,我需要访问解压缩文件夹中的文件。 任何人都可以请帮忙。 我提到了几个链接,但无法获得完整的解决方案。 https://medium.com/@keagileageek/paramiko-how-to-ssh-and-file-transfers-with-python-75766179de73

【问题讨论】:

  • 基本上,您需要下载存档,解压缩并将解压缩的内容上传回服务器。或者你需要将解压脚本上传到服务器并执行。
  • 不需要下载到本地,我想解压并保存在远程服务器中,然后从解压后的文件夹中读取文件
  • 您必须在服务器上上传.zip 文件(使用命令put)并在服务器上解压缩(使用外部程序unzip)。或者如果没有程序unzip,那么您可以在本地计算机上解压缩并使用put逐个文件上传文件

标签: python linux ssh


【解决方案1】:

首先你可以使用.put()上传文件,然后你可以使用外部程序unzip解压。

类似的东西

import paramiko

# login
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='192.168.0.1', username='user', password='PaSsWoRd')

# upload
ftp_client = ssh_client.open_sftp()
ftp_client.put('local.zip', 'remote.zip')
ftp_client.close()

# unzip
stdin, stdout, stderr = ssh_client.exec_command('unzip remote.zip')
print(stdout.read().decode())

# access files
stdin, stdout, stderr = ssh_client.exec_command('ls')
print(stdout.read().decode())

如果你想放入子文件夹,那么你可能需要创建这个子文件夹

stdin, stdout, stderr = ssh_client.exec_command('mkdir upload')

ftp_client.put('local.zip', 'upload/remote.zip')

stdin, stdout, stderr = ssh_client.exec_command('cd upload ; unzip remote.zip')

stdin, stdout, stderr = ssh_client.exec_command('ls upload')
# or 
stdin, stdout, stderr = ssh_client.exec_command('cd upload ; ls')

【讨论】:

  • 试过了,在 ssh_client.exec_command('unzip remote.zip') 之后打印语句不打印任何东西
  • 也许您已经有文件,unzip 询问是否覆盖它们。您可以使用unzip -y remote.zip 回答yes 的所有问题。
  • 或者它可能需要unzip -o remote.zipoverwrite
  • 感谢 furas,上述解决方案有效。我将解压缩的文件保存到一个文件夹中。这些实际上是 XML。现在我的下一步是使用元素树存储解析每个 xml。如何将这些 XML 文件传递​​给 ET.parse() 方法?我尝试了stackoverflow.com/questions/1596963/… 的解决方案,但它不起作用。我需要将这些解压缩的 XML 发送到 ET.parse()
  • 我不知道您在 XML 中有什么,但您必须在服务器上发送脚本并在服务器上运行它。如果您想在本地计算机上运行代码,从服务器读取数据并将结果发送回服务器,那么我认为这是浪费时间 - 您可以直接在本地计算机上执行此操作并仅将结果发送到服务器..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多