如何从python知道sftp中的当前工作目录

时间:2012-09-13 10:25:03

标签: python operating-system sftp paramiko

我已经连接到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文件夹

  3. 的文件夹

    最后任何人都可以告诉我以下内容

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

1 个答案:

答案 0 :(得分:2)

您正在寻找.getcwd() method

  

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

因此,在会话开始时,如果您需要当前正在运行的目录,请先尝试.chdir('.')(更改为当前目录)。

.listdir()方法仅返回目录中项目的名称。如果您需要有关这些文件的更多信息,则需要使用.listdir_attr() method,而是返回SFTPAttributes instances的列表。

SFTPAttributes实例通过.st_mode属性告诉您文件的模式。使用stat.S_ISDIR(mode) function来测试文件是否是目录。