4

我已经用一些细节连接到 sftp 以从 python 中使用 paramiko 获取一些文件,代码如下

import paramiko
import os
import ftplib

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )
ssh.connect('sftp.example.com', username='user', password='pass')
ftp = ssh.open_sftp()
files = ftp.listdir()
print files,"----< Total files"
print ftp.cwd(),"---< Current working diectory"

for feedFile in files:
    if feedFile == 'LifeBridge':
        ftp.chdir(feedFile)

结果

['Emerson', 'Lehighvalley', 'LifeBridge', 'stmaryct'] ----< Total files

File "test_sftp.py", line 11, in <module>
    print ftp.cwd()   ---< Current working diectory
AttributeError: 'SFTPClient' object has no attribute 'cwd'

我在这里做的是

  1. 试图找到 sftp 的当前工作目录

  2. 作为打印文件的结果,上面有一个文件列表,我正在尝试检查它们是文件夹还是文件,如果它们是我想输入到 文件夹中的LifeBridge文件夹

最后谁能告诉我以下

  1. 如何查看 sftp 的当前工作目录
  2. 如何检查上述列表的结果是文件还是文件夹
4

1 回答 1

9

您正在寻找该.getcwd()方法

返回此 SFTP 会话的“当前工作目录”,由 paramiko 模拟。如果没有设置目录chdir,则此方法将返回None

因此,在会话开始时,如果您需要当前工作目录,请先尝试.chdir('.')(更改到当前目录)。

.listdir()方法仅返回目录中项目的名称。如果您需要有关这些文件的更多信息,则需要使用该.listdir_attr()方法,它会返回一个SFTPAttributes实例列表。

一个实例通过属性SFTPAttributes告诉你文件有什么模式。.st_mode使用该stat.S_ISDIR(mode)函数测试文件是否为目录。

于 2012-09-13T10:30:05.347 回答