是否可以通过SSH使用os.walk?
我刚接触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不能这样使用。