是否可以通过SSH使用os.walk?

4 投票
2 回答
2045 浏览
提问于 2025-04-16 09:51

我刚接触Python,所以如果这问题很基础请多包涵。我搜索过但找不到答案。我想把一个Perl脚本转换成Python(3.x),这个脚本的功能是连接到一个远程服务器,并把指定目录里的文件复制到本地机器上。文件传输的完整性非常重要,所以脚本里有几个步骤来确保传输的完整和准确。

第一步是获取要传给rsync的文件完整列表。Perl脚本里有以下几行代码来实现这个功能:

@dir_list = `ssh user@host 'find $remote_dir -type f -exec /bin/dirname {} \\;'`;
@file_list = `ssh user@host 'find $remote_dir -type f -exec /bin/basename {} \\;'`;

然后这两个列表会被join在一起,形成一个叫做$full_list的完整列表。

我想用一个ssh连接,而不是打开两个单独的连接,接着使用os.walk来获取信息,代码如下:

for remdirname, remdirnames, remfilesnames in os.walk(remotedir):
    for remfilename in remfilesnames:
        remfulllist.append(os.path.join(remdirname, remfilename))

谢谢你能提供的任何帮助。

2 个回答

0

这看起来是一个可以用的遍历函数。目前我还没有测试过。

你可以在这里找到更多信息:https://pysftp.readthedocs.org/en/release_0.2.8/pysftp.html#pysftp.Connection.walktree

4

不,os.walk不能这样使用。

撰写回答