使用Python子进程和SSH读取远程文件?

6 投票
4 回答
28133 浏览
提问于 2025-04-17 00:01

我该如何通过子进程和SSH从一个大的远程文件中读取数据呢?

4 个回答

0

为了提高性能,特别是当文件很大的时候,rsync是一个很好的选择。想了解具体的性能提升,可以看看下面的帖子和Rafa的回答:`scp`和`rsync`有什么不同?

接下来,使用rsync的算法大概是这样的:

import subprocess

subprocess.Popen(["rsync", host-ip+'/path/to/file'],stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff
1

上面的答案是可行的,但你需要设置你的ssh登录,这样在你的电脑之间就可以不用密码登录了。其实还有其他方法可以用Python在电脑之间传文件。一个简单的方法是搭建一个apache服务器,然后使用一个http请求,这样就不需要身份验证了。

11

这段代码是用来处理某些数据的。它的主要目的是让计算机能够理解并操作这些数据。代码块中的内容可能包含一些指令,告诉计算机该怎么做,比如读取数据、进行计算或者输出结果。

在编程中,我们常常需要用代码来描述我们想要计算机完成的任务。这个过程就像给计算机下达命令,让它按照我们的要求去工作。

如果你对这段代码有疑问,可以尝试逐行理解每个部分的意思,或者查找相关的资料来帮助你更好地理解。

import subprocess
ssh = subprocess.Popen(['ssh', 'user@host', 'cat', 'path/to/file'],
                       stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff

撰写回答